使用统一 JVM 日志记录打印命令行标志

问题描述 投票:0回答:1

使用 OpenJDK 8 运行 Java 程序,以下 JVM 标志

-Xloggc:/var/log/gc.log

导致生成的日志文件包含以下行

CommandLine flags: -XX:InitialHeapSize=263196800 -XX:MaxHeapSize=4211148800 -XX:+PrintGC -XX:+PrintGCTimeStamps -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC 

从而提供正在运行的程序的显式和隐式 JVM 参数。

使用 OpenJDK 17 运行 Java 程序,从而使用统一 JVM 日志记录,我无法弄清楚如何打印显式和隐式 JVM 参数。我尝试过这个选项

-Xlog:all=trace

对于最小的 Java 程序来说,会生成 21k 行日志记录,但是快速搜索

-XX:
却什么也没有得到。也试过

-Xlog:arguments=trace

但是少数输出行不包含我需要的内容。

以下是在 Linux x64 上重现该问题的最少步骤:

wget https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4.1%2B1/OpenJDK17U-jdk_x64_linux_hotspot_17.0.4.1_1.tar.gz
tar xvf OpenJDK17U-jdk_x64_linux_hotspot_17.0.4.1_1.tar.gz
git clone https://github.com/jarirajari/helloworld.git
jdk-17.0.4.1+1/bin/java -Xlog:arguments=trace -XX:+UseG1GC -jar helloworld/helloworld.jar

输出如下,并且没有关于我传递给 java 可执行文件的 JVM 参数的信息:

[0.022s][trace][arguments] Memory size (original) 10485760 B (user defined: false)
[0.022s][trace][arguments] Memory size (adjusted) 10485760 B (modified: false)
[0.022s][trace][arguments] Memory size (adjustment) +0 B
[0.022s][trace][arguments] Global buffer size (original) 524288 B (user defined: false)
[0.022s][trace][arguments] Global buffer size (adjusted) 524288 B (modified: false)
[0.022s][trace][arguments] Global buffer size (adjustment) +0 B
[0.022s][trace][arguments] Thread local buffer size (original) 8192 B (user defined: false)
[0.022s][trace][arguments] Thread local buffer size (adjusted) 8192 B (modified: false)
[0.022s][trace][arguments] Thread local buffer size (adjustment) +0 B
[0.022s][trace][arguments] Number of global buffers (original) 20 (user defined: false)
[0.022s][trace][arguments] Number of global buffers (adjusted) 20 (modified: false)
[0.022s][trace][arguments] Number of global buffers (adjustment) +0
Hello world from HelloWorld.jar!

有什么想法吗?

java jvm jvm-arguments
1个回答
0
投票

java -XX:+UseG1GC -XX:+PrintCommandLineFlags -Xlog:gc:file=gc-%p.log -version

上述设置将创建一个具有最少 gc 输出的 gc 日志文件。

-XX:+PrintCommandLineFlags
将把命令行标志输出到 stderr。

© www.soinside.com 2019 - 2024. All rights reserved.