常见OOM

The heap stores all of the objects created by your java program.The heap's contents is monitored by the garbage collector,which frees memory from the heap when you stop using an object.
This is in contrast with the stack, which stores primitive types like ints and chars, and are typically local variables and function return values. Thess are not garbage collected.

Class在被 Load的时候被放入PermGen space区域,Instance存放在Heap区域


Java中关于OOM的场景及解决方法
 

1、OOM for Heap=>例如:java.lang.OutOfMemoryError: Java heap space
分  析
此OOM是由于JVM中heap的最大值不满足需要,将设置heap的最大值调高即可,参数样例为:-Xmx2G
解决方法
调高heap的最大值,即-Xmx的值调大。


2、OOM for Perm=>例如:java.lang.OutOfMemoryError: Java perm space
分  析
此OOM是由于JVM中perm的最大值不满足需要,将设置perm的最大值调高即可,参数样例

为:-XX:MaxPermSize=512M
解决方法
调高heap的最大值,即-XX:MaxPermSize的值调大。
另外,注意一点,Perm一般是在JVM启动时加载类进来,如果是JVM运行较长一段时间而不是刚启动后溢出的话,很有可能是由于运行时有类被动态加载进来,此时建议用CMS策略中的类卸载配置。
如:-XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled


3、OOM for GC=>例如:java.lang.OutOfMemoryError: GC overhead limit exceeded
分  析
此OOM是由于JVM在GC时,对象过多,导致内存溢出,建议调整GC的策略,在一定比例下开始GC而不要使用默认的策略,或者将新代和老代设置合适的大小,需要进行微调存活率。
解决方法
改变GC策略,在老代80%时就是开始GC,并且将-XX:SurvivorRatio(-XX:SurvivorRatio=8)和-XX:NewRatio(-XX:NewRatio=4)设置的更合理


转载地址:http://blog.chinaunix.net/uid-20577907-id-3192169.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值