JAVA设置垃圾收集选项。

3

我希望从运行在JVM上的程序中获取GC日志。我知道可以使用以下命令获取:

-Xloggc:GCLog.txt  -verbose:gc -XX:+PrintGCDateStamps -XX:+UseSerialGC 

使用应用程序时运行的参数

java -jar "jar_file". 

但是在这种情况下,我不能通过提供参数来以这种方式运行程序,有没有一种方法在运行应用程序之前指定它们?

例如,我们可以使用export设置XmxXms值。

JVM_MEM_OPTS="-Xms100m -Xmx100m"

在运行Java应用程序之前,是否有类似的方法来指定GC参数?

谢谢。


看起来有一个Java exec的包装器。您是否已将指定的GC JVM标志添加到JVM_MEM_OPTS变量中,并且Java包装器中是否有其他环境变量,例如JAVA_OPTS?您需要审查Java包装器以及如何调用Java可执行文件。 - CodeMonkey
JVM 不会 读取 JVM_MEM_OPTS 变量。启动 JVM 并带有特定参数是 Java 启动器的工作。由于您使用的是非标准的 Java 启动器,因此需要查阅该启动器的文档。您是如何知道 JVM_MEM_OPTS 的呢? - apangin
HotSpot JVM 会读取 JAVA_TOOL_OPTIONS_JAVA_OPTIONS 变量。您可以尝试其中一个。 - apangin
1个回答

1
举个例子,我们可以使用export设置Xmx、Xms的值。
JVM_MEM_OPTS="-Xms100m -Xmx100m"
这种方式不是标准的,在Java文档中也没有提到。 JVM_MEM_OPTS、JAVA_OPTS或任何环境变量仅会设置JVM选项,因为您用来启动JVM的工具/程序将其传输到执行的java命令的JVM选项中。 例如,JAVA_OPTS在Tomcat脚本(特别是catalina.sh/bat)中被识别。

-Xms100m -Xmx100m 作为 -Xloggc:GCLog.txt -verbose:gc -XX:+PrintGCDateStamps -XX:+UseSerialGCJVM选项
如果您不想直接在Java命令中传递这些选项,您可以像允许使用自定义环境变量的工具一样操作:创建一个脚本(特定于操作系统),该脚本将此环境变量用作JVM选项的值,例如(Linux方式):

java $JAVA_OPTS -jar "jar_file"

谢谢您的回答。但是我需要了解的是是否有像导出JVM_MEM_OPTS这样的选项来设置GC参数。 - Pasindu Tennage
原因是我无法使用java -jar启动我的程序。它使用了不同的命令,但底层仍然使用Java。 - Pasindu Tennage

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接