我正在使用8 GB RAM的Windows 2003服务器(64位) . 如何增加堆内存最大值?我使用 -Xmx1500m 标志将堆大小增加到1500 Mb . 我可以将堆内存增加到物理内存的75%(6 GB堆)吗?
-Xmx1500m
您可以在32位系统上增加到4GB . 如果您使用的是64位系统,则可以更高 . 如果你选错了,不用担心,如果你在32位系统上要求5g,java会抱怨无效值并退出 .
正如其他人发布的那样,使用cmd-line标志 - 例如
java -Xmx6g myprogram
您可以通过键入java -X来获取完整列表(或者几乎完整的列表) .
通过使用命令行选项可以增加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
在32位JVM上,理论上可以设置的最大堆大小为4gb . 要使用更大的堆大小,您需要使用64位JVM . 请尝试以下方法:
java -Xmx6144M -d64
-d64标志很重要,因为它告诉JVM以64位模式运行 .
可以在eclipse IDE中直接增加由JVM分配的堆大小
运行---->运行配置---->参数
输入-Xmx1g(用于设置最大大小,如Xmx256m或Xmx1g ...... m - > mb g ---> gb)
java -d64 -Xms512m -Xmx4g HelloWorld
其中,-d64:将启用64位JVM -Xms512m:将初始堆大小设置为512 MB -Xmx4g:将最大堆大小设置为4 GB(此处java文件名为:HelloWorld.java)
我可以将堆内存增加到物理内存的75%(6GB堆) .
是的你可以 . 事实上,如果你愿意,你可以增加到超过物理内存的数量 .
这样做是否是个好主意取决于系统上运行了多少其他功能 . 特别是,如果当前运行的应用程序和服务的“工作集”明显超过可用的物理内存,则系统可能会“捶打”,花费大量时间将虚拟内存页面移入和移出磁盘 . 净效应是系统变得非常慢 .
您可以通过传递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 堆大小将保持不变,并且额外的HeapSize将添加到 Old Generation 堆大小 . 要 equalize the size of Young Gen Heap and Old Gen Heap ,请使用 -XX:NewRatio=1 -XX:-UseAdaptiveSizePolicy 参数 .
java -jar -Xms4096M -Xmx6144M -XX:NewRatio=1 -XX:-UseAdaptiveSizePolicy pathToJarFile.jar
-XX:NewRatio = Old Gen Heap Size : Young Gen HeapSize (您可以使用此比率来获得所需的比率) .
请使用以下命令将堆大小更改为6GB
export JAVA_OPTS="-Xms6144m -Xmx6144m -XX:NewSize=256m -XX:MaxNewSize=356m -XX:PermSize=256m -XX:MaxPermSize=356m"
这仅适用于64位版本的Java . 转到“控制面板”,然后单击Java图标 . 在Java控制面板的小窗口中,单击Java菜单栏,然后单击 view 按钮 .
view
如果您有两个Java平台,请禁用以前版本的Java,然后单击Runtime parameters文本字段并写入 -Xmx1024m 或小于RAM大小 . 不要增加堆大小等于RAM,否则系统将崩溃 .
-Xmx1024m
有几个人用 -Xms 和 -Xms 的jvm选项指出了堆大小的具体答案 . 我想指出,这不是jvm唯一的内存选项 . 特别是如果你得到流量堆栈,那么你需要通过添加一个额外的选项来增加堆栈的大小,如 -Xss8m .
-Xms
-Xss8m
对于这个问题,像 -Xms2g -Xmx6g -Xss8m 这样的jvm选项将是一个解决方案 .
-Xms2g -Xmx6g -Xss8m
我正在分享这些信息,因为我的谷歌搜索如何增加jvm内存带我到这个解决方案,并且解决方案不适用于大量的内存分配 . 一旦我弄清楚具体设置是什么,我就能够谷歌如何增加堆栈大小并找到丢失的参数 . :)希望这可以节省其他时间,因为它可以节省我很多时间 . :)
Yes. You Can.
您可以将堆内存增加到物理内存的75%(6 GB堆)或更高 .
Since You are using 64bit you can increase your heap size to your desired amount. In Case you are using 32bit it is limited to 4GB.
$ java -Xms512m -Xmx6144m JavaApplication
设置初始堆大小为512mb,最大堆大小为6GB .
希望能帮助到你.. :)
11 回答
您可以在32位系统上增加到4GB . 如果您使用的是64位系统,则可以更高 . 如果你选错了,不用担心,如果你在32位系统上要求5g,java会抱怨无效值并退出 .
正如其他人发布的那样,使用cmd-line标志 - 例如
您可以通过键入java -X来获取完整列表(或者几乎完整的列表) .
通过使用命令行选项可以增加JVM分配的堆大小 . 这里我们有3个选项
在上面的行中,我们可以将最小堆设置为16mb,最大堆为64mb
在32位JVM上,理论上可以设置的最大堆大小为4gb . 要使用更大的堆大小,您需要使用64位JVM . 请尝试以下方法:
-d64标志很重要,因为它告诉JVM以64位模式运行 .
可以在eclipse IDE中直接增加由JVM分配的堆大小
运行---->运行配置---->参数
输入-Xmx1g(用于设置最大大小,如Xmx256m或Xmx1g ...... m - > mb g ---> gb)
java -d64 -Xms512m -Xmx4g HelloWorld
其中,-d64:将启用64位JVM -Xms512m:将初始堆大小设置为512 MB -Xmx4g:将最大堆大小设置为4 GB(此处java文件名为:HelloWorld.java)
是的你可以 . 事实上,如果你愿意,你可以增加到超过物理内存的数量 .
这样做是否是个好主意取决于系统上运行了多少其他功能 . 特别是,如果当前运行的应用程序和服务的“工作集”明显超过可用的物理内存,则系统可能会“捶打”,花费大量时间将虚拟内存页面移入和移出磁盘 . 净效应是系统变得非常慢 .
您可以通过传递JVM参数 -Xms 和 -Xmx 来增加堆大小,如下所示:
对于Jar文件:
对于Java文件:
上述参数将 InitialHeapSize (-Xms) 增加到4GB(4096 MB)和 MaxHeapSize(-Xmx) 增加到6GB(6144 MB) .
但是, Young Generation 堆大小将保持不变,并且额外的HeapSize将添加到 Old Generation 堆大小 . 要 equalize the size of Young Gen Heap and Old Gen Heap ,请使用 -XX:NewRatio=1 -XX:-UseAdaptiveSizePolicy 参数 .
-XX:NewRatio = Old Gen Heap Size : Young Gen HeapSize (您可以使用此比率来获得所需的比率) .
请使用以下命令将堆大小更改为6GB
这仅适用于64位版本的Java . 转到“控制面板”,然后单击Java图标 . 在Java控制面板的小窗口中,单击Java菜单栏,然后单击
view
按钮 .如果您有两个Java平台,请禁用以前版本的Java,然后单击Runtime parameters文本字段并写入
-Xmx1024m
或小于RAM大小 . 不要增加堆大小等于RAM,否则系统将崩溃 .有几个人用
-Xms
和-Xms
的jvm选项指出了堆大小的具体答案 . 我想指出,这不是jvm唯一的内存选项 . 特别是如果你得到流量堆栈,那么你需要通过添加一个额外的选项来增加堆栈的大小,如-Xss8m
.对于这个问题,像
-Xms2g -Xmx6g -Xss8m
这样的jvm选项将是一个解决方案 .我正在分享这些信息,因为我的谷歌搜索如何增加jvm内存带我到这个解决方案,并且解决方案不适用于大量的内存分配 . 一旦我弄清楚具体设置是什么,我就能够谷歌如何增加堆栈大小并找到丢失的参数 . :)希望这可以节省其他时间,因为它可以节省我很多时间 . :)
Yes. You Can.
您可以将堆内存增加到物理内存的75%(6 GB堆)或更高 .
Since You are using 64bit you can increase your heap size to your desired amount. In Case you are using 32bit it is limited to 4GB.
设置初始堆大小为512mb,最大堆大小为6GB .
希望能帮助到你.. :)