我使用的是Windows 2003服务器(64位),内存为8gb。如何增加堆内存最大值?我使用-Xmx1500m标志将堆大小增加到1500 Mb。我可以将堆内存增加到物理内存的75% (6gb堆)吗?


当前回答

这只适用于64位版本的Java。转到控制面板并单击Java图标。在Java控制面板的小窗口中,单击Java菜单栏,然后单击查看按钮。

如果您有两个Java平台,禁用以前版本的Java,然后单击运行时参数文本字段并写入-Xmx1024m或小于RAM大小。不要增加与RAM相等的堆大小,否则系统将崩溃。

其他回答

java -d64 -Xms512m -Xmx4g HelloWorld

在那里, -d64:启用64位JVM -Xms512m:将初始堆大小设置为512mb -Xmx4g:将设置堆的最大大小为4 GB (这里的java文件名是:HelloWorld.java)

如果有人想知道如何在窗口中这样做,下面是步骤。

可以使用以下命令行选项来增加JVM分配的堆大小:

-Xms<size>        set initial Java heap size
-Xmx<size>        set maximum Java heap size
-Xss<size>        set java thread stack size

在下面的例子中,最小堆大小设置为16mb,最大堆大小设置为64mb:

java -Xms16m -Xmx64m ClassName

我使用eclipse/STS在我的java代码中运行py文件有问题,由于jvm堆内存不足而获得PyException。我已经做了如下所述的更改,我能够解决这个问题。下面是我的系统配置。

这些就是我在我的工作空间里做的改变,瞧,它现在运行得很完美。

你可以通过传递JVM参数-Xms和-Xmx来增加堆大小,如下所示:

对于Jar文件:

java -jar -Xms4096M -Xmx6144M jarFilePath.jar

Java文件:

 java -Xms4096M -Xmx6144M ClassName

上述参数将InitialHeapSize (-Xms)增加到4GB (4096 MB), MaxHeapSize(-Xmx)增加到6GB (6144 MB)。

但是,年轻代堆大小将保持不变,额外的堆大小将被添加到老代堆大小。要平衡Young Gen Heap和Old Gen Heap的大小,使用-XX:NewRatio=1 -XX:-UseAdaptiveSizePolicy参数。

java -jar -Xms4096M -Xmx6144M -XX:NewRatio=1 -XX:-UseAdaptiveSizePolicy pathToJarFile.jar

-XX:NewRatio =老一代堆大小:年轻一代堆大小(你可以用这个比例来得到你想要的比例)。