如何在应用程序启动时确定Java堆大小

时间:2014-09-17 20:06:14

标签: java memory jvm

我有一个java桌面应用程序,支持一次查看大量数据。为了支持这一点,我使用高-Xms -Xmx设置启动应用程序。例如,

-Xms512m -Xmx1024m

我遇到的问题是,根据客户端计算机和当前使用情况,Java虚拟机无法始终以如此高的设置启动。解决方案是降低尺寸。

还有其他人遇到过这个问题吗?你是怎么解决的?有没有办法预先确定好的-Xms-Xmx尺寸?或者有没有办法在应用程序中指定大小而不是在启动时?

2 个答案:

答案 0 :(得分:3)

您无法在Java代码中确定它,因为它已经太晚了:它是JVM的一个属性,已经被激活了。

您需要执行特定于操作系统的操作来确定可用内存并使用适当的参数启动JVM。例如,在Linux上,您可以使用bash脚本启动应用程序,该脚本首先检查/proc/meminfo以确定系统配置,然后启动Java程序,相应地设置堆大小。 / p>

答案 1 :(得分:0)

您可以编写一个shell脚本或批处理脚本来确定服务器RAM容量,并根据您在JVM启动期间传递堆大小参数。