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日志JVM性能调优-小测试我们拿上面一条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性能调优-小测试的主要内容,如果未能解决你的问题,请参考以下文章

jvm 性能调优工具之 jstat 命令详解

JVM性能调优

JVM性能调优

jvm性能调优都做了啥

JVM性能优化--JVM参数配置,使用JMeter简单测试配合说明参数调优

性能测试三十六:内存溢出和JVM常见参数及JVM参数调优