我正在使用8 GB RAM的Windows 2003服务器(64位),如何增加堆内存最大值?我正在使用-Xmx1500m
标志将堆大小增加到1500 Mb。我能否将堆内存增加到物理内存的75%(6 GB堆)?
我正在使用8 GB RAM的Windows 2003服务器(64位),如何增加堆内存最大值?我正在使用-Xmx1500m
标志将堆大小增加到1500 Mb。我能否将堆内存增加到物理内存的75%(6 GB堆)?
如果您使用的是32位系统,则可以将其增加到2GB
。 如果您使用的是64位系统,则可以更高。 如果您选择错误,也不必担心,如果在32位系统上请求5g,Java会抱怨一个无效值并退出。
正如其他人发布的那样,请使用cmd-line标志,例如
java -Xmx6g myprogram
你可以通过键入java -X来获取完整列表(或者几乎完整列表)。
您可以使用以下命令行选项来增加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
-d64 标志很重要,因为它告诉JVM以64位模式运行。java -Xmx6144M -d64
您可以通过传递JVM参数-Xms和-Xmx来增加堆大小,例如:
对于Jar文件:
java -jar -Xms4096M -Xmx6144M jarFilePath.jar
对于Java文件:
java -Xms4096M -Xmx6144M ClassName
以上参数将初始堆大小(-Xms)增加到4GB(4096 MB),并将最大堆大小(-Xmx)增加到6GB(6144 MB)。
但是,年轻代(Young Generation)的堆大小将保持不变,并且额外的堆大小将添加到老年代(Old Generation)的堆大小中。为了使年轻代堆和老年代堆的大小相等,请使用-XX:NewRatio=1 -XX:-UseAdaptiveSizePolicy参数。
java -jar -Xms4096M -Xmx6144M -XX:NewRatio=1 -XX:-UseAdaptiveSizePolicy pathToJarFile.jar
-XX:NewRatio = Old Gen堆大小 : Young Gen堆大小(您可以根据需要调整此比率以获得所需的比率)。
在Eclipse中,可以直接增加JVM分配的堆大小。
进入Eclipse IDE后,依次点击:
运行---->运行配置---->参数
输入-Xmx1g(用于设置最大值,例如:Xmx256m或Xmx1g...... m代表MB,g代表GB)
java -d64 -Xms512m -Xmx4g HelloWorld
-d64: 启用64位JVM
-Xms512m: 将初始堆大小设置为512 MB
-Xmx4g: 将最大堆大小设置为4 GB
(这里的Java文件名是: HelloWorld.java)
export JAVA_OPTS="-Xms6144m -Xmx6144m -XX:NewSize=256m -XX:MaxNewSize=356m -XX:PermSize=256m -XX:MaxPermSize=356m"
-Xms
和 -Xmx
jvm 选项设置堆大小的具体答案。我想指出,这并不是 jvm 的唯一类型的内存选项。特别是,如果您遇到堆栈溢出,则需要添加另一个选项来增加堆栈大小,例如 -Xss8m
。
针对此问题,像 -Xms2g -Xmx6g -Xss8m
这样的 jvm 选项将是解决方案。
我分享这些信息,因为我的谷歌搜索如何增加 jvm 内存,最终找到了这个解决方案,但是这些解决方案在高内存分配下不起作用。一旦我知道了具体的设置是什么,我就能够通过谷歌搜索如何增加堆栈大小,并找到缺少的参数。:)希望这可以为其他人节省时间,因为它肯定会为我节省大量时间。:)
这仅适用于64位Java版本。进入控制面板并单击Java图标。在Java控制面板的小窗口中,单击Java菜单栏,然后单击查看
按钮。
如果您有两个Java平台,请禁用以前的Java版本,然后单击运行时参数文本字段并写入-Xmx1024m
或小于RAM大小。不要将堆大小增加到等于RAM,否则系统会崩溃。