增加Java中的堆大小

问题描述 投票:255回答:11

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

java heap-memory
11个回答
304
投票

您可以在32位系统上增加到4GB。如果您使用的是64位系统,则可以更高。如果你选错了,不用担心,如果你在32位系统上要求5g,java会抱怨无效值并退出。

正如其他人发布的那样,使用cmd-line标志 - 例如

java -Xmx6g myprogram

您可以通过键入java -X来获取完整列表(或者几乎完整的列表)。


1
投票

有几个人用-Xms-Xms的jvm选项指出了堆大小的具体答案。我想指出,这不是jvm唯一的内存选项。特别是如果你得到堆栈流量,那么你会想要通过添加额外的选项来增加堆栈的大小,比如-Xss8m

对于这个问题,像-Xms2g -Xmx6g -Xss8m这样的jvm选项将是一个解决方案。

我正在分享这些信息,因为我的谷歌搜索如何增加jvm内存带我到这个解决方案,并且解决方案不适用于大量的内存分配。一旦我弄清楚具体设置是什么,我就能够谷歌如何增加堆栈大小并找到丢失的参数。 :)希望这可以节省其他时间,因为它可以节省我很多时间。 :)


0
投票

是。您可以。

您可以将堆内存增加到物理内存的75%(6 GB堆)或更高。

由于您使用的是64位,因此可以将堆大小增加到所需的数量。如果您使用的是32位,则限制为4GB。

$ java -Xms512m -Xmx6144m JavaApplication

设置初始堆大小为512mb,最大堆大小为6GB。

希望能帮助到你.. :)


149
投票

通过使用命令行选项可以增加JVM分配的堆大小。这里我们有3个选项

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

java -Xms16m -Xmx64m ClassName

在上面的行中,我们可以将最小堆设置为16mb,最大堆为64mb


26
投票

在32位JVM上,理论上可以设置的最大堆大小为4gb。要使用更大的堆大小,您需要使用64位JVM。请尝试以下方法:

java -Xmx6144M -d64

-d64标志很重要,因为它告诉JVM以64位模式运行。


11
投票

可以在eclipse IDE中直接增加由JVM分配的堆大小

运行---->运行配置---->参数

输入-Xmx1g(用于设置最大大小,如Xmx256m或Xmx1g ...... m - > mb g ---> gb)


10
投票

java -d64 -Xms512m -Xmx4g HelloWorld

其中,-d64:将启用64位JVM -Xms512m:将初始堆大小设置为512 MB -Xmx4g:将最大堆大小设置为4 GB(此处java文件名为:HelloWorld.java)


7
投票

我可以将堆内存增加到物理内存的75%(6GB堆)。

是的你可以。事实上,如果你愿意,你可以增加到超过物理内存的数量。

这样做是否是个好主意取决于系统上运行了多少其他功能。特别是,如果当前运行的应用程序和服务的“工作集”明显超过可用的物理内存,则系统可能会“捶打”,花费大量时间将虚拟内存页面移入和移出磁盘。净效应是系统变得非常慢。


3
投票

您可以通过传递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 Generation Heap Size将保持相同,并且额外的HeapSize将添加到Old Generation Heap Size。要均衡Young Gen Heap和Old Gen Heap的大小,请使用-XX:NewRatio = 1 -XX:-UseAdaptiveSizePolicy params。

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

-XX:NewRatio = Old Gen Heap Size:Young Gen HeapSize(您可以使用此比率来获得所需的比率)。


2
投票

请使用以下命令将堆大小更改为6GB

export JAVA_OPTS="-Xms6144m -Xmx6144m -XX:NewSize=256m -XX:MaxNewSize=356m -XX:PermSize=256m -XX:MaxPermSize=356m"

2
投票

这仅适用于64位版本的Java。转到“控制面板”,然后单击Java图标。在Java控制面板的小窗口中,单击Java菜单栏,然后​​单击view按钮。

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

© www.soinside.com 2019 - 2024. All rights reserved.