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

increase the java heap size permanently after reboot?

提供给“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,我会看到值发生变化,但必须有一种方法来设置此 "permanently",这样我就不会依赖于环境变量。这就是我正在寻找的答案,另一个 post 中提供的答案似乎是一种解决方法。 set/change Java 最小和最大堆大小的默认设置如何在重启后永久保留并且不依赖于导出的环境变量。我的服务器具有不同的默认值,所以这似乎是可能的。

修订 看完前两条评论,这是执行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     

我尝试将以下内容添加到脚本的顶部: export _JAVA_OPTIONS="-Xmx4g"

但是当我 运行:

时,这并没有改变 MaxHeap 大小的值

$ java -XX:+PrintFlagsFinal -version | grep -iE 'MaxHeapSize'

Which works, but not after rebooting the server.

如果你想在重启时发生,每次启动新环境时都需要设置。这不是 Java 的功能,而是环境变量在 shell.

中的工作方式

I have a bash script that executes a jar file to handle images, and this is all run by the Apache user.

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

How can one set/change the default settings of the Java min and max heap sizes to permanently retain after reboot and not dependent on a exported environment variable.

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

您可以编译您自己的 OpenJDK 版本(因为这是您正在使用的版本),您可以在其中更改默认值。