请告诉我这些选择的目的。
谷歌搜索后,我认为:
MinHeapFreeRatio告诉“将确保在GC之后堆内存中指定的最小最小空间可用空间”
和
MaxHeapFreeRatio告诉“GC之后堆内存中的可用空间不超过指定的百分比” [如果剩余空间超过指定的百分比,则这些内存将返回给OS]
当我尝试将这些选项都设置为10时,即使有超过80%的可用堆内存,也没有将其释放回OS。
细节:
Java HotSpot(TM)64位服务器VM(1.5.0_15-b04,混合模式)
ParallelGC(也称为吞吐量收集器,它是服务器类VM中的默认收集器)
我将-Xms50M和-Xmx1000M指定为jvm参数
操作系统:Windows 7 Professional(8 GB内存64位操作系统)
注意:我也尝试过SerialGC,那些最小和最大堆空闲比率选项被忽略了。
最佳答案
Java 很少有将内存释放回操作系统。
一般来说,随着时间的流逝,应用程序使用的内存更多而不是更少。您确定您的内存力很有限以至于需要吗?您确定要检查的是常驻内存,而不是虚拟内存大小,在任何情况下,虚拟内存大小始终约为1.2 GB。