作为一个测试,决定用jmeter来试着调优
其实gc挺少了,1s不到。gc共计 11次,但练习,还是问题不大。
结论:
增加 eden区,以及增加metaspace区域 内存。
GC 从11次下降至 3次,占用48ms。下降100ms左右。
内存下降:Eden区扩充减少,由71M下降为 46M
过程:
1.先来一次,没加任意参数的:
2.为了保持一致性,所有都加了打印gc日志的参数
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-XX:+PrintHeapAtGC
-Xloggc:F:\EB-Worker\test\jmeter-trunk\jmeter-trunk\bin\gc_begin.log
先来个初试情况:
CommandLine flags: -XX:InitialHeapSize=65859648 -XX:MaxHeapSize=1053754368 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
初始:约62M,最大10005M
GC 11次,时间占用 208ms
GC (Allocation Failure) 7次
GC (Metadata GC Threshold) 4次
示例如下:
出现了full GC,
方法区,GC了。查资料知道,该区域,默认就是20M。但是看visual GC,最终会加载值34M。所以其实这里可以 初始化定一下内存。
所以计划目标是:
增加 eden区,以及增加metaspace区域。
3. 参数:
-Xms200m
-Xmn130m
-XX:MetaspaceSize=40M
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-XX:+PrintHeapAtGC
-Xloggc:F:\EB-Worker\test\jmeter-trunk\jmeter-trunk\bin\gc.log
结果:
GC次数变成了3次,然后整体耗时36ms,占用64M
三次均是 (Allocation Failure),未触发 full GC。
- 去除日志分析,参数:
-Xms200m
-Xmn130m
-XX:MetaspaceSize=40M
GC 从11次下降至 3次,占用48ms。下降100ms左右。
内存下降:Eden区扩充减少,由71M下降为 46M
surviver占用变多。
old 区,因为young区够用。所以old去占用很少。减少13M
metaspace:不怎么变化。