如何覆盖 JVM 选项中的 -Xmx50m?

pac*_*cer 1 java out-of-memory jvm-arguments

我当时正在使用一个工具。JVM 选项是可配置的。

最近,我收到 OutOfMemoryError 因此我在选项配置中添加 -Xmx1024m ,如下所示。

config.properties:JVM_OPTION =“-Xmx4096m -XX:-UseGCOverheadLimit”

之前的cmd日志:java -Xms16777216 -Xmx50m com.f.Startmain

现在的cmd日志:java -Xms16777216 -Xmx50m com.f.Startmain -Xmx4096m -XX:-UseGCOverheadLimit

该工具现在仍然内存不足,因为 -Xmx4096m 没有覆盖旧的。该工具不可修改,配置只是在命令末尾添加新选项。

有人知道在 JVM 选项中覆盖 -Xmx50m 的方法吗?

Joe*_*ade 5

这似乎已经在这里得到了回答

显然对于Windows和Linux,你可以设置:

export _JAVA_OPTIONS="-Xmx1g"
Run Code Online (Sandbox Code Playgroud)

我进行了快速测试,这似乎覆盖了命令行参数。(意外)

我的代码:

public class Test {
  public static void main(String[] argv) {
    System.out.println("mem: " + Runtime.getRuntime().freeMemory());
    System.out.println("total mem: " + Runtime.getRuntime().totalMemory());
  }
}
Run Code Online (Sandbox Code Playgroud)

这是运行该程序的输出

export _JAVA_OPTIONS="-Xmx20m";
java Test
>> Picked up _JAVA_OPTIONS: -Xmx20m
>> mem: 19601168
>> total mem: 20447232

java -Xmx123m Test
>> Picked up _JAVA_OPTIONS: -Xmx20m
>> mem: 19601320
>> total mem: 20447232

# clear java options
export _JAVA_OPTIONS=
java -Xmx123m Test
>> Picked up _JAVA_OPTIONS: 
>> mem: 121773128
>> total mem: 123731968
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,在我清除 _JAVA_OPTIONS 之前,命令行上的 Xmx 值将被忽略。