服务器和客户端JVM之间的区别之一是服务器JVM将尝试使用并保留所有可用内存(最多配置或默认Xmx),但客户端JVM对用户计算机是“仁慈的”并且不会保留未使用的内存(源?)。
在具有大量内存和多个CPU的服务器上的服务器'JVM将默认为chousen,导致相当大的默认Xmx和'服务器内存复用策略'。
这会导致小型java应用程序在实际操作中慢慢占用4G内存,只需要100M
我怎样才能将'服务器JVM内存复用策略'更改为'客户端'JVM,但不降级其他'服务器JVM性能改进'?
答案 0 :(得分:2)
假设HotSpot JVM,Java 9.您可以使用-Xmx
设置堆大小的硬限制,或者如果没有使用{{1}的足够比率的堆,则指示JVM将内存返回到操作系统(在这种情况下,您还应该设置-XX:MaxHeapFreeRatio
)。
Java 9文档中的Performance Tuning Examples部分建议
-XX:MinHeapFreeRatio
保持堆小。