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

teo*_*teo 5 jvm classloader

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

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

谢谢!

Dan*_*dei 1

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

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

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

  • 好吧,“视觉类加载”的想法正是从使用“-verbose”选项中提出的,因为这不会向您显示类加载器(据我所知),并且您并没有真正了解该类的“大局”使用它来进行类加载过程。无论如何,我想问题中的工具对于理解和学习类加载而不是故障排除很有用。 (2认同)