如何记录 class 在 OpenJDK 17 上的加载位置? (无法识别的 VM 选项 'TraceClassLoading')
How to log where a class was loaded from on OpenJDK 17? (Unrecognized VM option 'TraceClassLoading')
使用 OpenJDK 8,-XX:+TraceClassLoading
标志记录从哪个 jar class 加载:
$ java -XX:+TraceClassLoading ...
[Loaded java.lang.Object from jdk1.8.0_202/jre/lib/rt.jar]
OpenJDK 17 及更新版本无法识别该标志:
$ java -XX:+TraceClassLoading ...
Unrecognized VM option 'TraceClassLoading'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
OpenJDK 17 的等效标志是什么?
对于 OpenJDK 9 及更新版本,传递 -Xlog:class+load=info
而不是 -XX:+TraceClassLoading
:
$ java -Xlog:class+load=info ...
...
[info ][class,load] java.lang.Object source: jrt:/java.base
OpenJDK 9 弃用了 -XX:+TraceClassLoading
并引入了新的 'Unified Logging Framework' (the -Xlog
option) as part of JEP 158。
对于 OpenJDK 9 到 15,如果通过 -XX:+TraceClassLoading
,则会记录以下警告:
-XX:+TraceClassLoading is deprecated. Will use -Xlog:class+load=info instead.
从 OpenJDK 16 开始,该标志被忽略:
Ignoring option TraceClassLoading; support was removed in 16.0
从 OpenJDK 17 开始,该标志被拒绝。
使用 OpenJDK 8,-XX:+TraceClassLoading
标志记录从哪个 jar class 加载:
$ java -XX:+TraceClassLoading ...
[Loaded java.lang.Object from jdk1.8.0_202/jre/lib/rt.jar]
OpenJDK 17 及更新版本无法识别该标志:
$ java -XX:+TraceClassLoading ...
Unrecognized VM option 'TraceClassLoading'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
OpenJDK 17 的等效标志是什么?
对于 OpenJDK 9 及更新版本,传递 -Xlog:class+load=info
而不是 -XX:+TraceClassLoading
:
$ java -Xlog:class+load=info ...
...
[info ][class,load] java.lang.Object source: jrt:/java.base
OpenJDK 9 弃用了 -XX:+TraceClassLoading
并引入了新的 'Unified Logging Framework' (the -Xlog
option) as part of JEP 158。
对于 OpenJDK 9 到 15,如果通过 -XX:+TraceClassLoading
,则会记录以下警告:
-XX:+TraceClassLoading is deprecated. Will use -Xlog:class+load=info instead.
从 OpenJDK 16 开始,该标志被忽略:
Ignoring option TraceClassLoading; support was removed in 16.0
从 OpenJDK 17 开始,该标志被拒绝。