在Linux机器上增加堆大小

13

我使用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

并将这一行更改为:

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

但后来我重新启动了机器,并使用以下命令检查了最大大小:

java -XshowSettings:all

这表明:

Max Heap Size (Estimated): 3.80GB

我想利用我得到的高内存(16 GB)来做些什么?还能做什么其他的事情吗?


@BackSlash 是的,当我输入 free -m 时它显示了16 GB,并且操作系统类型是64位。 - Shadin
2个回答

7
改变Tomcat配置不会影响所有JVM实例以获取这些设置。它的工作方式并非如此,该设置仅用于启动由Tomcat使用的JVM,而不是在shell中启动的JVM。
请查看此处以永久更改堆大小。

谢谢。我读到过最好将XmxXms设置为相同的值,但我想知道MaxPermSize的最佳值是多少。如果XmxXms都是12 GB,而总内存是16 GB,那么MaxPermSize的最佳值是多少? - Shadin
1
堆没有最佳设置。一切都取决于您的应用程序。不要尝试分配尽可能多的堆,因为这可能会导致长时间的GC触发暂停。谷歌Java堆指南。对于MaxPermSize也是如此-您可以在此处阅读更多信息-https://dev59.com/T2ct5IYBdhLWcg3wa8s_。 - Pawel Pogorzelski

5
您可以使用以下代码片段:
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}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接