在 Linux 机器上增加堆大小

Posted

技术标签:

【中文标题】在 Linux 机器上增加堆大小【英文标题】:Increasing Heap Size on Linux Machines 【发布时间】:2014-10-25 13:30:18 【问题描述】:

我在 Ubuntu 桌面机器上工作,我想增加 Java 的堆大小。 RAM 为 16GB,当前最大堆大小为 3GB

我查看了这篇帖子Increasing Tomcat Heap Size

没有太多关于 Ubuntu 的信息,所以我尝试了这个命令:

java -Xmx10000m -X2000m -XshowSettings:all

结果是:

Min Heap Size: 1.95G
Max Heap Size: 9.77G

然后sudo gedit /etc/tomcat7/default

并将此 lino 更改为:

JAVA_OPTS="-Djava.awt.headless=true -Xmx10000m -XX:MaxPermSize=2000m" 

然后我重新启动了机器并使用以下方法检查了最大尺寸:

java -XshowSettings:all

这表明:

Max Heap Size (Estimated): 3.80GB

我想利用我获得的高 RAM (16 GB)。还有什么我可以做的吗?

【问题讨论】:

@BackSlash 是的,当我输入 free -m 并且 OSType 为 64 位时,它显示 16 GB 【参考方案1】:

更改 Tomcat 配置不会影响所有 JVM 实例以获取这些设置。 这不是它的工作原理,该设置将仅用于启动 Tomcat 使用的 JVM,而不是在 shell 中启动。

查看here 永久更改堆大小。

【讨论】:

谢谢。我读过最好将XmxXms 设置为相同的值。但我想知道MaxPermSize。如果 XmxXms 为 12 GB。总内存为 16 GB。 MaxPermSize 的最佳价值是多少? 堆没有最佳设置。一切都取决于您的应用程序。不要尝试分配尽可能多的堆,因为这会导致长时间的 GC 触发暂停。 Google for Java 堆指南。 MaxPermSize 也是如此 - 您可以在此处阅读更多相关信息 - ***.com/questions/12114174/what-does-xxmaxpermsize-do。【参考方案2】:

可以使用以下代码sn -p:

java -XX:+PrintFlagsFinal -Xms512m -Xmx1024m -Xss512k -XX:PermSize=64m -XX:MaxPermSize=128m
    -version | grep -iE 'HeapSize|PermSize|ThreadStackSize'

在我的电脑中,我得到以下输出:

    uintx InitialHeapSize                          := 536870912       product
    uintx MaxHeapSize                              := 1073741824      product
    uintx PermSize                                 := 67108864        pd product
    uintx MaxPermSize                              := 134217728       pd product
     intx ThreadStackSize                          := 512             pd product

【讨论】:

以上是关于在 Linux 机器上增加堆大小的主要内容,如果未能解决你的问题,请参考以下文章

线上机器JVM参数配置

如何在 Android 2.3 (Gingerbread) 上增加堆大小?

如何在 IntelliJ IDEA 上增加内存堆大小?

Linux增加swap虚拟内存

Linux增加swap虚拟内存

Tomcat 6 堆大小 - 这是正确的吗?