请告诉我这些选项的目的。
谷歌搜索后我想:
MinHeapFreeRatio 表示“GC 后将确保堆内存中指定的最小空间百分比是可用的”
和
MaxHeapFreeRatio告诉“GC后堆内存中的空闲空间不会超过指定的百分比”[如果空闲内存超过指定的百分比,这些内存将返回给操作系统]
当我尝试这些选项时,两者的值都为 10,即使有超过 80% 的可用堆内存,它也不会释放回操作系统。
Details:
Java HotSpot(TM) 64 位服务器 VM(1.5.0_15-b04,混合模式)
ParallelGC(也称为吞吐量收集器,是服务器类 VM 中的默认收集器)
我指定 -Xms50M 和 -Xmx1000M 作为 jvm 参数
操作系统:Windows 7 Professional(8 GB内存64位操作系统)
注意:我也刚刚尝试使用 SerialGC,那些最小和最大堆空闲比率选项被忽略。
关于参数 -XX:MinHeapFreeRatio 和 -XX:MaxHeapFreeRatio 参数的最佳解释可以在 oracle 垃圾文档中找到:
https://docs.oracle.com/javase/10/gctuning/factors-affecting-garbage-collection-performance.htm https://docs.oracle.com/javase/10/gctuning/factors-affecting-garbage-collection-performance.htm
-XX:MinHeapFreeRatio=40
-XX:MaxHeapFreeRatio=70
使用这些选项,如果一代中的可用空间百分比低于 40%,则该代将扩展以保持 40% 的可用空间,直至该代允许的最大大小。同样,如果可用空间超过 70%,则该代会收缩,从而只有 70% 的空间是可用的,具体取决于该代的最小大小。
我将它与G1GC结合起来是这样的:
-XX:+UseG1GC -XX:MinHeapFreeRatio=2 -XX:MaxHeapFreeRatio=10
得到这个结果:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)