答案提供给" increase the java heap size permanently?"没有实际回答这个问题。至少在我期待的意义上。我会在同一页面的评论中添加这个细节,但我没有获得这个特权,但我离题了。该问题的答案表明要导出以下内容:export _JAVA_OPTIONS="-Xmx4g"
。哪个有效,但重启服务器后无效。
这是一个导出的变量,并且如下面的另一个成员所述,可以将别名添加到该用户的.bashrc文件中。这意味着仅在调用该用户的环境时才调用该设置。对?我想知道的是如何在此处注明MaxHeapSize设置:
$ java -XX:+PrintFlagsFinal -version | grep -iE 'MaxHeapSize'
Picked up _JAVA_OPTIONS: -Xmx2g
uintx MaxHeapSize := 2147483648 {product}
java version "1.6.0_37"
OpenJDK Runtime Environment (IcedTea6 1.13.9) (rhel-1.13.9.4.el6_7-x86_64)
OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode)
即使在重新启动服务器后也会永久设置。我有一个bash脚本执行一个jar文件来处理图像,这一切都由Apache用户运行。哪个没有shell环境。将提到的导出字符串添加到脚本环境不会呈现所需的uintx MaxHeapSize值。如果我只是导出所需的MaxHeapSize,我会看到值的变化,但必须有一种方法来设置这个"永久性"所以我不依赖于环境变量。这就是我正在寻找的答案,其他帖子中提供的答案似乎是一个解决方法。如何设置/更改Java最小和最大堆大小的默认设置,以便在重新引导后永久保留,而不依赖于导出的环境变量。我有不同默认值的服务器,所以它似乎是可能的。
REVISED 阅读前两条注释后,这是执行jar的脚本:
PATH=$PATH:$HOME/bin:/usr/java/jdk1.5.0_05/bin
CLASSPATH=.:/home/hg/bin/imageutils.jar:
export CLASSPATH
export PATH
java com.hg.image.Thumbnail $1 $2 $3 $4 $5
我尝试将以下内容添加到脚本的顶部:
export _JAVA_OPTIONS="-Xmx4g"
但是当我跑步时,这并没有改变MaxHeap大小的值:
$ java -XX:+PrintFlagsFinal -version | grep -iE 'MaxHeapSize'
答案 0 :(得分:2)
哪个有效,但重启服务器后无效。
如果您希望在重新启动时发生,则每次启动新环境时都需要设置它。这不是Java的一个特性,而是环境变量在shell中的工作方式。
我有一个执行jar文件来处理图像的bash脚本,这些都是由Apache用户运行的。
我会将它添加到bash脚本中,以便每次都设置它。这就是脚本的用途。
如何设置/更改Java最小和最大堆大小的默认设置,以便在重新启动后永久保留,而不依赖于导出的环境变量。
默认最大值是主内存的1/4,这就是它根据内存大小而变化的原因。
您可以编译自己的OpenJDK版本(就像您正在使用的那样),在那里您可以更改默认值。