jvm - Java类加载可视化/分析工具

标签 jvm classloader

是否有任何工具可以连接到 jvm 并实时向您展示如何在该 jvm 中加载类?
我想它会成为一个很棒的 jvisualvm 插件......但是没有找到这样的东西让我想知道这是否可行?
我只找到了一些对一些看似“晦涩”的工具的引用,这些工​​具与 weblogic 或 webspere 严格相关。

假设这样的工具是可能的,它是否与特定容器严格相关?

谢谢!

最佳答案

我意识到这不适用于已经在运行的 JVM,但是 java -verbose:class 怎么样? ?

如果要调试特定类的类加载器问题,可以连接调试器并为该类设置类加载断点(Eclipse 就是这样调用它们的,在 IntelliJ 中,您只需在类的第一行放置一个断点)。

更新:既然你提到你想看到类加载器,理论上我猜你可以写一个调用 java.lang.instrument.Instrumentation.getAllLoadedClasses() 的代理。在 agentmain并打印一个类及其类加载器的树。但问题是 ClassLoader没有“身份”,因此您可能会得到一张漂亮的图片,但您仍然不知道哪个类加载器属于哪个 Java EE 部署或 OSGi 包。我想这就是为什么没有那么多工具可以做到这一点......

关于jvm - Java类加载可视化/分析工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5583573/

相关文章:

java - 加载序列化类

Java类加载器

java - HBase Java 客户端不工作(MasterNotRunningException 异常)

java - Java 系统属性是如何从主机派生的?

java - JVM 堆栈变量

java - 使用类加载器隔离两个静态类

java - 我自己的类加载器?

Java 作为 Java 的脚本语言?

gradle - 导入协程-常见会导致错误 “Cannot inline bytecode build with JVM target 1.8 into…”。即使使用明确指定的jvmTarget

java - 当我将它们注入(inject) SystemClassLoader 时,如何确定类加载顺序?