• JBOSS内存溢出处理


    JBOSS内存溢出处理

    前几天公司一个项目的服务器坏了,就换了一个备份服务器顶替一下,但是没有跑一会就宕机了,一直报java.lang.OutOfMemoryError。。。。一看到这里,就知道是内存溢出,但是JBoss的内存配置已经达到1024M了,而且对JBoss内存的监测结果看,并不高,怎么会死机呢,好奇怪。搞了半天还是没有结果。郁闷~~~~ 


         到了最后,已经绝望了我,打算换一个JBoss版本,再换一个JDK,看看是不是这些的问题。但是再换以前,我就把日志又重新看了一次,发现一个问题。报的java.lang.OutOfMemoryError后面还有内容:java.lang.OutOfMemoryError: PermGen space,这个好像和java.lang.OutOfMemoryError: Java heap space这个不一样。最后找了一下这个异常! 

    PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。 

    改正方法,在 run.bat 中加入:-Xms512m -Xmx1024m -XX:MaxNewSize=256m -XX:MaxPermSize=256m 
    因为项目中引用了很多的 jar 包,而这些 jar 包中的 class 信息会被 JBoss 的 class loader 加载到 PermGen space 区域,在 JVM 默认的情况下,该部分空间的大小只有 4M,在 jar 包非常多的情况下,显然是不够用的,所以通过 -XX:MaxPermSize=256m 指定最大值后即可解决问题。 

    我的JBoss里面装载了6个应用,jar包和class加起来有100m左右,配上这个参数后,一切OK,最后服务器修好以后,发现,这个里面的JBoss也是这么来配置的,哎~~看来以后备份,最好还是吧JBoss一起备份出来吧! 
    而当出现出现 java.lang.OutOfMemoryError: Java heap space 这个异常时,通过调节-Xms512m -Xmx1024m这个就可以解决。 
    另外,这个两个参数 -XX:+UseParallelGC -XX:+UseParallelOldGC 让服务并行回收内存空间。但是,这两个参数配置上去以后,也会占用一定的内存空间。 
  • 相关阅读:
    【HDU4261】Estimation-DP+优先队列优化
    【POJ3744】Scout YYF I-概率DP+矩阵加速优化
    【POJ3744】Scout YYF I-概率DP+矩阵加速优化
    【HDU2294】Pendant-DP矩阵优化
    【HDU2294】Pendant-DP矩阵优化
    【BZOJ1269】文本编辑器editor(AHOI2006)-NOI原题升级版
    【BZOJ1269】文本编辑器editor(AHOI2006)-NOI原题升级版
    【NOI2003T2】文本编辑器Editor-伸展树数列操作
    zk create() 方法
    FLUSH TABLES WITH READ LOCK 锁全局
  • 原文地址:https://www.cnblogs.com/firstdream/p/5521623.html
Copyright © 2020-2023  润新知