码迷,mamicode.com
首页 > 其他好文 > 详细

几种outofmemory的解决方法

时间:2014-11-05 11:01:49      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:outofmemory   permgen   jvm参数   java heap space   eclipse   

几种outofmemory的解决方法:
1.  java.lang.OutOfMemoryError: PermGen space
        PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space。从文字上看就是内存溢出,解决方法是加大内存。为什么会内存溢出,这是由于这块内存主要是被JVM存放Class和Meta信息的,Class在被Load的时候被放入PermGen space区域,它和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小那么就会产生此错误信息了。
 修改TOMCAT_HOME/bin/catalina.sh
   在“echo "Using CATALINA_BASE:    $CATALINA_BASE"”上面加入以下行:
   JAVA_OPTS="-server -XX:PermSize=128M -XX:MaxPermSize=128m

   如果是在eclipse中启动,可以设置:

bubuko.com,布布扣

bubuko.com,布布扣

   2.  java.lang.OutOfMemoryError: Java heap space
     JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置。JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。
在“echo "Using CATALINA_BASE:    $CATALINA_BASE"”上面加入以下行:

  JAVA_OPTS="-server -Xms800m -Xmx800m    -XX:MaxNewSize=256m"

jvm新生代、永久代的模型可参考 http://blog.csdn.net/kingofworld/article/details/17718587

JVM参数:
-XX:+PrintGCDetails  打印垃圾回收信息
-Xms 为Heap区域的初始值,线上环境需要与-Xmx设置为一致,否则capacity的值会来回飘动
-Xmx 为Heap区域的最大值
-Xss(或-ss) 线程栈大小(指一个线程的native空间)1.5以后是1M的默认大小
-XX:PermSize与-XX:MaxPermSize  方法区(永久代)的初始大小和最大值(但不是本地方法区)
-XX:NewRatio  老年代与新生代比率
-XX:SurvivorRatio  Eden与Survivor的占用比例。例如8表示,一个survivor区占用 1/8 的Eden内存,即1/10的新生代内存,为什么不是1/9?因为我们的新生代有2个survivor,即S1和S22。所以survivor总共是占用新生代内存的 2/10,Eden与新生代的占比则为 8/10。
-XX:MaxHeapFreeRatio  GC后,如果发现空闲堆内存占到整个预估的比例小于这个值,则减小堆空间。
-XX:MinHeapFreeRatio  GC后,如果发现空闲堆内存占到整个预估的比例大于这个值,则增大堆空间。
-XX:NewSize    新生代大小

几种outofmemory的解决方法

标签:outofmemory   permgen   jvm参数   java heap space   eclipse   

原文地址:http://blog.csdn.net/kingofworld/article/details/40817921

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!