Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何以编程方式增加java堆大小_Java_Size_Heap - Fatal编程技术网

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

如何以编程方式增加java堆大小,java,size,heap,Java,Size,Heap,我有一个用于搜索文件的java桌面应用程序,它通常很快就会达到默认堆限制。我无法访问将安装它的所有系统,因此我希望在应用程序本身中增加JVM堆大小。有谁能帮助我如何在我的应用程序中以编程方式实现这一点吗 也许你也可以清理部分代码以减少内存使用 致以最诚挚的问候没有这样的标准API 我建议您使用JavaWebStart来调用您的应用程序(可用于最新的Sun Java 6中的本地应用程序),因为它允许您为此指定值 你可以有三个或四个链接,每个链接指向完全相同的文件,但是有“微小”、“中等”、“大”

我有一个用于搜索文件的java桌面应用程序,它通常很快就会达到默认堆限制。我无法访问将安装它的所有系统,因此我希望在应用程序本身中增加JVM堆大小。有谁能帮助我如何在我的应用程序中以编程方式实现这一点吗

也许你也可以清理部分代码以减少内存使用


致以最诚挚的问候

没有这样的标准API

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


你可以有三个或四个链接,每个链接指向完全相同的文件,但是有“微小”、“中等”、“大”、“巨大”的堆大小。

< P>查看一些类似的东西,并考虑部署可执行文件,当有人开始运行应用程序时,可以控制限制。


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

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


有关部署备选方案,请参阅此部分。

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

为什么不选择添加一些具有定义的jvm启动参数(如Xmx)的启动脚本(bat或sh)并将其与应用程序本身一起部署。如果任何应用程序都可以随意提高它,那么设置限制又有什么意义呢?您不能以编程方式更改正在运行的应用程序中的内存约束以供参考,下面是热点的RFE:bugs.sun.com/bugdatabase/view_bug.do?bug_id=4408373 32位JVM的可能副本不会忽略较大的最大堆大小,而是不会启动。仅设置-mx1200m或类似。(-mx的工作原理与-Xmx相同)