内存溢出(OutOfMemoryError)

内存溢出:

内存溢出(out of memory)就是内存不够,当所需要的内存超出分配的内存时,就会导致内存溢出。

比如下面的程序:

List<String> list=new ArrayList<String>();
while(true)
{
   list.add("你好");
}

出现异常:


        内存溢出在系统开发和测试阶段并不容易被发现,当系统正式上线一般时间后,操作的并发量上来了,数据也积累了一些,系统就容易出现内存溢出的现象,而此时系统又不能随意停机或重启,为修正BUG带来很大的困难。

导致内存溢出的情况有如下几种:

(1)内存中加载的数据量过于庞大,如一次从数据库取出过多数据;

(2)集合类中有对对象的引用,使用后未进行清除,导致JVM不能将对象回收;

(3)代码中存在死循环或者在循环中产生过多的重复对象实体;

(4)jvm启动参数设定过小导致;

(5)使用别人的软件中的bug导致。

解决内存溢出的方法:

(1)对jvm的启动参数进行修改,增加内存

(2)对错误日志进行检查,查看“OutOfMemory”错误前是否有其它异常或错误

(3)编程人员需对代码进行走查和分析,找出可能发生内存溢出的位置

(4)使用内存分析工具动态地查看内存的使用情况,如JProfiler、jconsole等


在对内存溢出进行分析时,需要对jvm有一定的掌握。可参考以下链接,写的比较详细:http://www.cnblogs.com/200911/p/3965108.html



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值