如何以编程方式增加Java堆大小
我有一个用于搜索文件的java桌面应用程序,它通常很快就会达到默认的堆限制。 我无法访问将要安装的所有系统,因此我想在应用程序本身中增加JVM堆大小。 任何人都可以帮助我如何在我的应用程序中以编程方式执行此操作
将-Xmx设置为一个gig并不意味着JVM将在启动时分配那么多内存。 JVM将仅分配-Xms(加上开销),直到需要更多堆空间。 您是否需要保护您的用户免受虚拟内存抖动或操作系统内存分配失败的影响? 如果没有,只需将Xmx设置为较大的值即可。 请注意,Windows 32位JVM通常会忽略大于1.2Gig的Xmx设置,因此最好不要请求安全以上的工作。
没有这样的标准API。
我建议您使用Java Web Start来调用您的应用程序(可以在最新的Sun Java 6中用于本地应用程序),因为它允许您为此指定值。
然后,您可以有三个或四个链接,每个链接指向完全相同的文件,但具有“Tiny”,“Medium”,“Large”,“Gigantic”堆大小。
看到这篇关于增加java堆大小的post:
永久增加java堆大小?
也许您可以清理代码的某些部分以减少内存使用量。
最好的祝福
看看像launch4j这样的东西,并考虑部署可执行文件,你可以在有人开始运行应用程序时控制限制。
您将无法以编程方式执行此操作。
对于桌面应用程序,我建议提供一个启动器,然后可以指定所需的内存大小。 除了配置JVM之外,您还可以提供图标,文件关联等。
请参阅此SO问题以了解部署方案。