首页 文章

增加Java中的堆大小

提问于
浏览
253

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

11 回答

  • 147

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

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

    java -Xmx6g myprogram
    

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

  • 10

    通过使用命令行选项可以增加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

  • 1

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

    java -Xmx6144M -d64

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

  • 7

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

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

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

  • 3

    java -d64 -Xms512m -Xmx4g HelloWorld

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

  • 302

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

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

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

  • 10

    您可以通过传递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 (您可以使用此比率来获得所需的比率) .

  • 26

    请使用以下命令将堆大小更改为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,否则系统将崩溃 .

  • 2

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

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

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

  • 0

    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 .

    希望能帮助到你.. :)

相关问题