Ale*_*nov 1 java monitoring jvm jvm-hotspot
我无法在这里找到使用 Java VM (JVM) 参数来记录类卸载的 Web 搜索工作方式。
这里http://www.herongyang.com/JVM/ClassLoader-JVM-Option-verbose-class.html建议调用java -verbose:class -version,但据说是为了加载,并且只给出了加载的日志。
-XX:-TraceClassUnloading 跟踪类的卸载。-XX:-TraceClassLoading 跟踪类的加载。
java -XX:-TraceClassUnloading -version
不输出有关课程的信息:
[0.004s][warning][arguments] -XX:-TraceClassUnloading is deprecated. Will use -Xlog:class+unload=off instead.
java version "13" 2019-09-17
Java(TM) SE Runtime Environment (build 13+33)
Java HotSpot(TM) 64-Bit Server VM (build 13+33, mixed mode, sharing)
Run Code Online (Sandbox Code Playgroud)
和:
java -XX:-TraceClassLoading -version
[0.002s][warning][arguments] -XX:-TraceClassLoading is deprecated. Will use -Xlog:class+load=off instead.
java version "13" 2019-09-17
Java(TM) SE Runtime Environment (build 13+33)
Java HotSpot(TM) 64-Bit Server VM (build 13+33, mixed mode, sharing)
Run Code Online (Sandbox Code Playgroud)
一样。
附带问题:不推荐使用的词意味着灰心丧气,而不是不再工作,为什么会出现这种行为?
但是对于类加载java -Xlog:class+load -version输出信息,例如
[0.037s][info][class,load] java.nio.CharBuffer source: shared objects file
[0.037s][info][class,load] java.nio.HeapCharBuffer source: shared objects file
[0.037s][info][class,load] java.nio.charset.CoderResult source: shared objects file
Run Code Online (Sandbox Code Playgroud)
但java -Xlog:class+unload -version只有版本信息。
如何获取 Java VM HotSpot(和/或 OpenJDK)的类卸载日志?
你这么说
java -XX:-TraceClassUnloading -version
Run Code Online (Sandbox Code Playgroud)
不输出有关类的信息。但我不知道为什么会期望它提供信息。
仅当 JVM 已启动且类已加载和卸载时,您才会看到日志记录:
该-version选项的文档说:
-version显示版本信息,然后退出。
它没有说 JVM 已启动。
去除-version/
从 Java 9 开始,-XX:-TraceClassUnloading已弃用。您可以将其替换为-Xlog:class+load=info.
假设启动了 JVM,并且加载了类,那么在正常的 Java 应用程序中不会卸载类。仅在以下情况下才会发生类卸载:
简而言之,您很可能看不到任何卸载日志消息,因为没有类被卸载。
附带问题:不推荐使用的词意味着灰心丧气,而不是不再工作,为什么会出现这种行为?
因为他们决定改变 JVM 日志记录选项的工作方式。Java 9 中发生了更改:请参阅https://openjdk.java.net/jeps/158。
这些-XX选项可能会发生变化。检查当前选项所使用的 Java 版本的手册。相关发行说明中还应提及更改(功能弃用和删除)。
您链接到的有关 JVM 选项的页面以粗体显示:
“请注意,此页面仅适用于 JDK 7 及更早版本。”
1 - 类与其类加载器之间存在双向链接,以及从类的任何实例到类本身的单向链接。结果之一是引导类加载器和应用程序类加载器在 JVM 的生命周期内保持可访问性。
2 - GC 通常仅在必要时运行;即当堆利用率达到某个阈值时。当 JVM 退出时,它不会自动运行。
3 - 单次运行 GC 不一定能找到所有无法访问的对象。
4 - 某些 JVM/GC 不支持类卸载,可以通过命令行选项禁用(或可能需要启用)此功能。
| 归档时间: |
|
| 查看次数: |
2097 次 |
| 最近记录: |