1 常用参数说明
- -Xms:初始堆内存空间大小(默认为物理内存的1/64)
- -Xmx: 最大堆内存空间大小(默认为物理内存的1/4)
- -Xmn:设置新生代大小(初始值和最大值)
- -XX:NewRatio:配置新生代与老年代在堆中的结构占比,默认是2,即新生代:老年代为1:2
- -XX:SurvivorRatio:设置新生代中Eden和S0S的空间比例
这里的Survivor区域不能设置太小,因为如果小到不能存放所有幸存者,会导致对象直接进入老年代,会导致MiorGC和分带思想都失去本来意义。
这里的Eden区也不能太小,因为Eden空间总是不够用的时,会频繁触发Minor GC,从而影响整体性能。。
- -XX:MaxTenuringThreshold:设置新生代垃圾的最大年龄
- -XX:+PrintGCDetails:打印详细的GC处理信息
- -XX:+PrintGC:打印GC简要信息
- -XX:HandlePromotionFailure:是否设置空间分配担保
在发生MinorGC之前,虚拟机会检查老年代最大可用空间,是否大于新生代所有对象的总空间
1. 如果大于,则此次Minor GC是安全的
2. 如果小于,则有剩余空间不足以存储所有存活的对象的风险,接下在怎么处理,需要看虚拟机参数-XX:HandlePromotionFailure设置是否允许担保失败:
2.1 如果允许担保失败,那么会继续检查老年代最大可用连续空间是否大于历次晋升到老年代的对象的平均大小。如果大于,则尝试进行Minor GC(有风险),如果小于,直接进行full GC。
2.2 如果不允许担保失败,则直接进行Full GC。
在JDK6 Update24之后,Han dlePromotionFailure参数失效,不再影响空间分配担保策略,改为默认为true,不可修改了,也就是说,会一直允许担保失败。
来源:oschina
链接:https://my.oschina.net/lancerdai/blog/4780041