JVM性能调优-小测试
Posted 一个技术宅的日常
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM性能调优-小测试相关的知识,希望对你有一定的参考价值。
JDK自带的jvm调优工具jvisuaLVM
配置
eclipse配置文件eclipse.ini,添加
-Xms256m 最小堆内存 -Xmx1024m 最大堆内存
eclipse配置文件eclipse.ini,打印出gc日志
-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:F:androideclipse3.18eclipsegcgc.log
重启eclispe在gc.log会打印出gc日志我们拿上面一条GC出来分析,如
2017-07-19T21:40:40.432+0800: 18.498: [GC (GCLocker Initiated GC) [PSYoungGen: 123909K->23017K(125952K)] 170172K->74234K(427008K), 0.0516005 secs] [Times: user=0.09 sys=0.00, real=0.05 secs]
2017-07-19T21:40:40.432+0800: 时间戳 18.498: 启动到发生gc的时间 GC:GC类型,还有个full GC PSYoungGen:年轻代 Prallell Scavenge(年轻代收集器、并行收集器,复制算法) 123909K->23017K(125952K):当前年轻代的大小->gc后年轻代的大小(年轻代总分配的空间) 170172K->74234K(427008K):堆内存->gc后堆内存 0.0516005 secs:gc发生时间
然后下面是Full GC的日志
2017-07-19T21:40:33.157+0800: 11.226: [Full GC (Metadata GC Threshold) [PSYoungGen: 10730K->0K(112128K)] [ParOldGen: 52811K->46254K(301056K)] 63541K->46254K(413184K), [Metaspace: 53972K->53972K(1099776K)], 0.3041220 secs] [Times: user=0.61 sys=0.00, real=0.30 secs]
里面包括年轻代、年老代和永久代的gc内存情况
从上面的gc可以看出,一次启动eclipse差不多GC或Full GC10次,其实我们可以做优化,年轻代一直gc的原因是分配的年轻代内存小,所以每次用完就gc,又申请内存,导致内存越来越多,所以如果分配内存多,会减少gc的次数,下面来配置年轻代和永久代(参数多次调才达到最优状态)
-Xms256m -Xmx1024m -XX:NewSize=400m -XX:MaxNewSize=400m -XX:PermSize=90m -XX:MaxPermSize=90
gc次数有明显的减少,从10次下降到6次
以上是关于JVM性能调优-小测试的主要内容,如果未能解决你的问题,请参考以下文章