在 JDK 8 中,默认的最大堆大小为物理内存的四分之一或1GB。您可以使用
明显的解决方案是使用一个检查剩余空间并计算Xmx的Shell脚本,但这似乎是一个笨拙的解决方案。我想用纯Java也应该有可能实现。
-Xmx
开关覆盖此默认值。 Xmx
开关使用字节而不是分数。是否有一种简单直接的方法将最大堆设置为机器物理内存的 X%?为什么要这样做呢?首先是好奇心。我觉得默认的 Xmx 是根据物理内存的一部分定义的,但只要我一碰它,它就变成了一个绝对值。其次,如果我将相同(或类似)的应用程序部署到两个不同的服务器上,其中一个服务器具有更多的物理内存,我希望有自动利用额外内存的选项。这并不总是有意义的,但有时确实是这样。明显的解决方案是使用一个检查剩余空间并计算Xmx的Shell脚本,但这似乎是一个笨拙的解决方案。我想用纯Java也应该有可能实现。