• 几种outofmemory


    几种outofmemory的解决方法:
    1.  java.lang.OutOfMemoryError: PermGen space

            PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space。从文字上看就是内存溢出,解决方法是加大内存。为什么会内存溢出,这是由于这块内存主要是被JVM存放Class和Meta信息的,Class在被Load的时候被放入PermGen space区域,它和存放Instance的Heap区域不同,另外要注意,在默认情况下,perm space是可以被垃圾收集的(除了CMS垃圾收集器之外),不再使用的class将会被unload,用参数-Xnoclassgc可以设置让perm space不卸载不再使用的class。一般GC算法也是会照顾permanent generation的,每次permanent generation满了要做扩展前都会触发一次FULL GC,除非设置了-Xnoclassgc。 

    Java.lang.OutOfMemoryError: 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中启动,可以设置:

       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    新生代大小

    http://blog.csdn.net/kingofworld/article/details/40817921

  • 相关阅读:
    smdkv210
    wireshark常用过滤规则
    go json序列化不填充默认值
    refactoring.guru-重构-如何重构
    refactoring.guru--重构--何时重构
    refactoring.guru--重构--技术债务
    refactoring.guru学习记录--重构--整洁的代码
    window7下python3 编译pjsua
    go 单元测试框架介绍
    算法图解学习笔记之算法
  • 原文地址:https://www.cnblogs.com/XJJD/p/7411070.html
Copyright © 2020-2023  润新知