如何以编程方式增加Java堆大小

时间:2010-01-15 18:31:53

标签: java size heap

我有一个用于搜索文件的java桌面应用程序,它通常很快就会达到默认的堆限制。我无法访问将要安装的所有系统,因此我想在应用程序本身中增加JVM堆大小。任何人都可以帮助我如何在我的应用程序中以编程方式执行此操作

5 个答案:

答案 0 :(得分:6)

将-Xmx设置为一个gig并不意味着JVM将在启动时分配那么多内存。 JVM将仅分配-Xms(加上开销),直到需要更多堆空间。您是否需要保护您的用户免受虚拟内存抖动或操作系统内存分配失败的影响?如果没有,只需将Xmx设置为较大的值即可。请注意,Windows 32位JVM通常会忽略大于1.2Gig的Xmx设置,因此最好不要求使用多个演出来保证安全。

答案 1 :(得分:4)

没有这样的标准API。

我建议您使用Java Web Start来调用您的应用程序(可以在最新的Sun Java 6中用于本地应用程序),因为它允许您为此指定值。

然后,您可以拥有三个或四个链接,每个链接指向完全相同的文件,但具有“Tiny”,“Medium”,“Large”,“Gigantic”堆大小。

答案 2 :(得分:2)

请参阅这篇关于增加java堆大小的文章:

increase the java heap size permanently?

也许您也可以清理代码的某些部分以减少内存使用量。

最好的问候

答案 3 :(得分:2)

查看launch4j之类的内容,并考虑部署可执行文件,以便在有人开始运行您的应用程序时控制限制。

您将无法以编程方式执行此操作。

答案 4 :(得分:2)

对于桌面应用程序,我建议提供一个启动器,然后可以指定所需的内存大小。除了配置JVM之外,您还可以提供图标,文件关联等。

有关部署备选方案,请参阅此SO question