仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 380|回复: 8
打印 上一主题 下一主题

[学习教程] 了解下JAVA的服务器java.lang.OutOfMemoryError: allocLargeArray内存溢出的办理

[复制链接]
第二个灵魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:02:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
net程序员的大部门代码都靠控件拖拽完成的,虽然java也有,但是无论从美观和速度上都没发和.net比。java程序员都是代码完成的,所以java程序员常戏称.net程序员是操作员,呵呵。
明天一个web服务器不事情了,检察日记.tomcat报出以下信息:
Causedby:java.lang.OutOfMemoryError:allocLargeArray-Objectsize:80040,Numelements:40010
以上日记信息基础的意义是程序要分派一个巨细为80040字节的数组(在JVM中数组也是对象,也是在heap平分配的),40010是指数组元素的几。可是分派这个数组的时分,heap没有可用的空间了。
针对以下情况,办理举措以下:
A:调剂javaJVM参数,优化java假造机,得当调年夜heap的设置
B:清算体系无用日记,优apache运转参数.翻开gc日记以搜集更多的heap利用信息.
关于javaJVM的优化,更深切懂得以下:
JVM内存的设置的道理
默许的java假造机的巨细对照小,在对年夜数据举行处置时java就会报错:java.lang.OutOfMemoryError。
设置jvm内存的办法,关于独自的.class,能够用上面的办法对Test运转时的jvm内存举行设置。
java-Xms64m-Xmx256mTest
-Xms是设置内存初始化的巨细
-Xmx是设置最年夜可以利用内存的巨细(最好不要凌驾物理内存巨细)
在weblogic中,能够在startweblogic.cmd中对每一个domain假造内存的巨细举行设置,默许的设置是在commEnv.cmd内里。

JVM内存的调优
1.Heap设定与渣滓接纳JavaHeap分为3个区,Young,Old和Permanent。Young保留刚实例化的对象。当该区被填满时,GC会将对象移到Old区。Permanent区则卖力保留反射对象,本文不会商该区。JVM的Heap分派可使用-X参数设定,
-Xms:初始Heap巨细
-Xmx:javaheap最年夜值
-Xmn:younggeneration的heap巨细
JVM有2个GC线程。第一个线程卖力接纳Heap的Young区。第二个线程在Heap不敷时,遍历Heap,将Young区晋级为Older区。Older区的巨细即是-Xmx减往-Xmn,不克不及将-Xms的值设的过年夜,由于第二个线程自愿运转会下降JVM的功能。
为何一些程序频仍产生GC?有以下缘故原由:
l程序内挪用了System.gc()或Runtime.gc()。
l一些两头件软件挪用本人的GC办法,此时必要设置参数克制这些GC。
lJava的Heap太小,一样平常默许的Heap值都很小。
l频仍实例化对象,Release对象。此时只管保留偏重用对象,比方利用StringBuffer()和String()。
假如你发明每次GC后,Heap的残剩空间会是总空间的50%,这暗示你的Heap处于安康形态。
很多Server真个Java程序每次GC后最好能有65%的残剩空间。履历之谈:
1.Server端JVM最好将-Xms和-Xmx设为不异值。为了优化GC,最好让-Xmn值约即是-Xmx的1/3[2]。
2.一个GUI程序最好是每10到20秒间运转一次GC,每次在半秒以内完成[2]。
<p>
你对java乐观有点盲目。java的关键就是在服务器上表现优异,而且它提供了整个开发所需要的工具。应该是说,看哪天。net有没有机会赶上java。
简单生活 该用户已被删除
沙发
发表于 2015-1-20 12:55:28 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
飘灵儿 该用户已被删除
板凳
发表于 2015-1-26 17:02:32 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
蒙在股里 该用户已被删除
地板
发表于 2015-1-27 10:13:16 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
爱飞 该用户已被删除
5#
发表于 2015-2-5 04:44:16 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
乐观 该用户已被删除
6#
发表于 2015-2-11 04:32:07 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
分手快乐 该用户已被删除
7#
发表于 2015-3-1 21:06:43 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
山那边是海 该用户已被删除
8#
发表于 2015-3-17 16:09:11 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
第二个灵魂 该用户已被删除
9#
 楼主| 发表于 2015-3-24 10:45:11 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 17:08

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表