系统中使用最大可用内存的Java应用程序

5

有-Xmx和max-heap-size(jnlp)选项可设置Java应用程序可以使用的最大内存。

如果未指定这些选项,则允许应用程序仅使用系统中可用的少量物理内存。这就是人们玩-Xmx的原因,以允许应用程序使用更多内存。但对我来说,这真的是一场噩梦,因为客户机器上可能有不同数量的内存,甚至需要考虑操作系统。

是否有任何方法允许Java应用程序使用系统中可用的最大内存?

谢谢。


这个回答解决了你的问题吗?Java -Xmx, 系统上的最大内存 - undefined
2个回答

5

3

很遗憾,我所知道的最好方法是编写一个简单的启动器(可能是一个shell脚本或批处理文件),检查系统,确定适当的-Xmx值,然后启动Java应用程序。一旦JVM初始化完成,就无法更改这些值。


无论你在-Xmx中放入多少内存,JVM都会占用它,并且直到你退出程序之前不会释放。因此,你可能会遇到一些大量占用内存的问题... - Miquel
1
@Miquel:不是,那是-Xms,初始堆大小。-Xmx是最大堆大小。 - cha0site
2
一旦JVM获得了内存,它就不会释放。有一些技术情境论据反对这一点,但实际上这些情况从未发生过,因此分配给堆的内存将保持分配状态。这并不意味着主机操作系统不能将其交换出去,但这是一个完全不同的问题。 - user177800

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接