`
xielioo
  • 浏览: 7908 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

JVM 内存优化

    博客分类:
  • JAVA
 
阅读更多
1.打印gc日志
eclipse.ini文件配置如下
-vmargs
-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails
-verbose:gc
-Xloggc:gc.log
通过eclipse启动的tomcat,在Installed jres下配置vm argument
-XX:+PrintGCDetails
-XX:+HeapDumpOnOutOfMemoryError

2.日志分析
[GC [DefNew: 107743K->6585K(118016K), 0.0267541 secs] 147055K->45897K(183552K), 0.0268449 secs] [Times: user=0.03 sys=0.00, real=0.03 secs]
新生代回收前107743K,回收后6585K,回收前总量118016K,Heap 回收前147055K回收后45897K,回收前总量183552K
如果出现频繁回收,总量不变的情况,说明总量太小,需要调高,如果出现总量不断提高,可以调高内存分配的最小值。
新生代空间不足,调大-Xmn
heap不足,调大-Xms -Xmx

3.jvm参数分析
-xmn 新生代内存大小,太小会导致频繁的小型垃圾回收,果断或导致很少的小型回收,fullgc增加,影响性能。推荐为堆大小的1/4
-Xms 初始堆大小
-Xmx 最大堆大小
-XX:+UseParallelGC 双核支持
-XX:PermSize=128M  初始非堆内存
-XX:MaxPermSize=512M
非堆内存,即我们经常看到的PermGen space ,是指内存的永久保存区域这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics