Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重新启动后是否永久增加java堆大小?_Java_Heap - Fatal编程技术网

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

重新启动后是否永久增加java堆大小?,java,heap,Java,Heap,提供给“”的答案实际上没有回答该问题。至少在我期待的意义上。我本想在同一页的评论中添加这一细节,但我没有获得这一特权,但我离题了。该问题的答案是这样导出以下内容:export\u JAVA\u OPTIONS=“-Xmx4g”。它可以工作,但在重新启动服务器后不能工作 这是一个导出的变量,当下面的另一个成员国声明时,可以为该用户将别名添加到.bashrc文件中。这意味着只有在调用该用户的环境时才调用该设置。对吗?我想知道的是如何在此处记录此MaxHeapSize设置: $ java -XX:+P

提供给“”的答案实际上没有回答该问题。至少在我期待的意义上。我本想在同一页的评论中添加这一细节,但我没有获得这一特权,但我离题了。该问题的答案是这样导出以下内容:
export\u JAVA\u 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最小和最大堆大小的默认设置,使其在重新启动后永久保留,而不依赖于导出的环境变量。我的服务器具有不同的默认值,因此这似乎是可能的

修订版 阅读前两条注释后,这是执行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\u JAVA\u OPTIONS=“-Xmx4g”

但这并没有改变我运行时MaxHeap大小的价值:

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

它可以工作,但在重新启动服务器后不能工作

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

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

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

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

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


您可以编译自己版本的OpenJDK(正如您正在使用的一样),并在其中更改默认值。

您必须将
export\u JAVA\u OPTIONS=“-Xmx4g”
添加到启动服务器的脚本或shell中,例如添加到运行用户的
.bashrc
。调用
export
与在程序中定义局部变量没有什么不同:当您重新运行该程序时,必须再次设置它“我有一个执行jar文件的bash脚本”,因此将该选项添加到该脚本中!在该脚本中执行
java-jar myjar.jar
,因此只需将其更改为
java-Xmx4g-jar myjar.jar
,该脚本将始终(永久)为该java程序使用4G。在问题中添加了我的脚本详细信息。因此,基于这两个响应,除了导出_JAVA_OPTIONS=?此外,正如我在问题的修订部分中提到的,我将提到的导出添加到脚本中,但它不起作用。执行脚本后,值仍然相同。所以它要么起作用,我不能见证它,要么不起作用。谢谢。答案的这一部分确实有助于澄清问题:“默认最大值是主内存的1/4,这就是它根据内存大小而变化的原因。”我想我的最后一个后续问题是,在我的bash脚本
export\u JAVA\u OPTIONS=“-Xmx4g”
的顶部添加了以下内容,该脚本在使用应用程序时由Apache用户执行,当以root用户身份运行
$java-XX:+PrintFlagsFinal-version | grep-iE'MaxHeapSize'
命令时,我是否能够看到堆的增加?目前我没有。@H-man没有,因为你没有执行脚本,所以你看不到效果。@H-man会告诉你用户能够做什么样的更改,从而改变root的功能。e、 g.
export\u JAVA\u OPTIONS=“;runCommandToMakeMeRoot;”