重启后永久增加java堆大小?

时间:2016-07-11 15:25:18

标签: java heap

答案提供给" 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'

1 个答案:

答案 0 :(得分:2)

  

哪个有效,但重启服务器后无效。

如果您希望在重新启动时发生,则每次启动新环境时都需要设置它。这不是Java的一个特性,而是环境变量在shell中的工作方式。

  

我有一个执行jar文件来处理图像的bash脚本,这些都是由Apache用户运行的。

我会将它添加到bash脚本中,以便每次都设置它。这就是脚本的用途。

  

如何设置/更改Java最小和最大堆大小的默认设置,以便在重新启动后永久保留,而不依赖于导出的环境变量。

默认最大值是主内存的1/4,这就是它根据内存大小而变化的原因。

您可以编译自己的OpenJDK版本(就像您正在使用的那样),在那里您可以更改默认值。