并发标记扫描
假设您使用并发标记扫描收集器(例如-XX:UseConcMarkSweepGC),则默认情况下,它会在OldGen达到70%时开始并发收集.但这可通过CMSInitiatingOccupancyFraction进行调整,例如:
-XX:CMSInitiatingOccupancyFraction=42
这将以42%的默认值开始70%的并发收集
请注意,CMSInitiatingOccupancyFraction仅对第一个集合有效.要“永久启用”,请添加UseCMSInitiatingOccupancyOnly:
-XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=42
最大堆自由率
您还可以查看MaxHeapFreeRatio,它是GC之后为避免收缩而可用的最大堆百分比,默认情况下,该百分比设置为70%,但您也可以更改该值:
-XX:MaxHeapFreeRatio=42
触底
但是在更改任何参数之前,最好了解这种“高垃圾回收利用率”的原因:
>如果需要如此频繁地收集,为何将它带到OldGen?
>您是否正在捕获流数据?
>堆大小是否太小而无法解决问题?
>在堆外存储此特定数据是否有意义?
>等.
由于通常JVM非常擅长于知道何时收集,而且只会变得越来越好.