请告诉我这些选项的目的.谷歌搜索之后我认为:MinHeapFreeRatio告诉"在GC之后将确保指定的最小空间百分比在堆内存中释放"并且MaxHeapFreeRatio告诉"在GC之后不超过指定的空间百分比将在堆内存中释放"[如果有是超出指定百分比的超出可用内存,那些内存将返回到OS]
当我尝试使用10作为这两个值的这些选项时,即使有超过80%的可用堆内存,它也没有被释放回操作系统.
详细信息:Java HotSpot(TM)64位服务器VM(1.5.0_15-b04,混合模式)ParallelGC(也称为吞吐量收集器,它是服务器类VM中的默认收集器)我将-Xms50M和-Xmx1000M指定为jvm参数OS :Windows 7专业版(8 GB内存64位操作系统)
注意:我刚刚尝试使用SerialGC,忽略了最小和最大堆自由比率选项.
Mar*_*tin 14
参数 -XX:MinHeapFreeRatio 和 -XX:MaxHeapFreeRatio 参数的最佳解释可在 oracle 垃圾收集器文档中找到:
https://docs.oracle.com/javase/10/gctuning/factors-affecting-garbage-collection-performance.htm
-XX:MinHeapFreeRatio=40
-XX:MaxHeapFreeRatio=70
Run Code Online (Sandbox Code Playgroud)
使用这些选项,如果一代中的可用空间百分比低于 40%,则该代将扩展以保持 40% 的可用空间,直至该代允许的最大大小。同样,如果可用空间超过 70%,则世代会收缩,因此只有 70% 的空间是可用的,具体取决于世代的最小大小。
我将它与G1GC结合起来是这样的:
-XX:+UseG1GC -XX:MinHeapFreeRatio=2 -XX:MaxHeapFreeRatio=10
Run Code Online (Sandbox Code Playgroud)
得到这个结果:
Java很少将内存释放回操作系统。
一般来说,随着时间的推移,应用程序会使用更多的内存,而不是更少。你确定你的记忆力有限,所以你需要这个吗?您确定要检查常驻内存而不是虚拟内存大小吗?在您的情况下,虚拟内存大小始终约为 1.2 GB。
| 归档时间: |
|
| 查看次数: |
11281 次 |
| 最近记录: |