服务器和客户端JVM之间的区别之一是,服务器JVM将尝试使用并保留所有可用内存(直到配置的或默认的Xmx),但客户端JVM对用户机器“仁慈”,不会保留未使用的内存(源?)。
在具有大量内存和多个CPU的机器上,默认情况下将选择“server”JVM,从而导致相当大的默认Xmx和“server memory retantion policy”。
这将导致小型java应用程序缓慢地抓取4G内存,而实际上它只需要100M。
如何将“服务器JVM内存保留策略”更改为“客户端”JVM,而不是降级其他“服务器JVM性能改进”?
发布于 2018-03-06 21:25:50
假设使用Java,Java9。您可以使用-Xmx设置堆大小的硬限制,或者如果-XX:MaxHeapFreeRatio未使用足够比例的堆,则指示HotSpot将内存返回给操作系统(在这种情况下,您还应该设置-XX:MinHeapFreeRatio)。
Java9文档中的Performance Tuning Examples部分建议
-XX:MaxHeapFreeRatio=10 -XX:MinHeapFreeRatio=5用于保持堆较小。
https://stackoverflow.com/questions/49131483
复制相似问题