参考dubbo性能测试中jvm参数:http://dubbo.apache.org/zh-cn/docs/user/perf-test.html
一、虚拟机线上配置参数
-server
-Xmx2g
-Xms2g
-Xmn256m
-XX:PermSize=128m
-Xss256k
-XX:+DisableExplicitGC
-XX:+UseConcMarkSweepGC
-XX:+CMSParallelRemarkEnabled
-XX:+UseCMSCompactAtFullCollection
-XX:LargePageSizeInBytes=128m
-XX:+UseFastAccessorMethods
-XX:+UseCMSInitiatingOccupancyOnly
-XX:CMSInitiatingOccupancyFraction=70
-XX:PretenureSizeThreshold=3145728
此参数只对Serial和ParNew两个收集器有用,parallel scavenge收集器不认识这个参数。
当创建的对象超过指定大小时,直接把对象分配在老年代中。
参数设定超过对象超过多少时,分配到老年代中,此例为3M(3*1024*1024)
-XX:MaxTenuringThreshold=1
在新生代中对象存活次数(经过Minor GC的次数)后仍然存活,就会晋升到旧生代。
-XX:+HandlePromotionFailure
Java1.5以前默认关闭Java1.6后默认启用 新生代收集担保,如果允许,那么会继续检查老年代最大可用的连续空间是否大于历次晋升到老年代对象的平均大小,如果大于,则尝试进行一次新生代Minor GC,如果小于,或者此参数设置为不允许冒险,则此时直接进行一次Full GC.
注意,在1.7中此参数失效,规则变为只要老年代的连续空间大于新生代对象总大小或者历次晋升的平均大小就会进行Minor GC,否则进行Full GC。
二、虚拟机打印排查问题设置参数
-XX:+PrintCommandLineFlags
jvm参数可查看默认设置收集器类型
-verbose:gc
记录 GC 运行以及运行时间,一般用来查看 GC 是否是应用的瓶颈
-XX:+PrintGCDetails
记录 GC 运行时的详细数据信息,包括新生成对象的占用内存大小以及耗费时间等