JDK 1.6 捆绑了一个名为 VisualVM 的便捷工具,可让您检查正在运行的 Java 进程并与之交互。一项功能是它自动检测本地机器上正在运行的 JVM。大多数被列为“(pid xxxx)”,但有些有名称和图标,如 VisualVM 本身和其他如 NetBeans(例如,请参阅此 dzone 文章中的屏幕截图)。
如何将我的应用程序名称和图标注入 JVM,使其正确显示在 VisualVM 的应用程序列表中?我的应用程序是否需要运行 JRE 1.6 或者我也可以在 1.5 下执行此操作?
JDK 1.6 捆绑了一个名为 VisualVM 的便捷工具,可让您检查正在运行的 Java 进程并与之交互。一项功能是它自动检测本地机器上正在运行的 JVM。大多数被列为“(pid xxxx)”,但有些有名称和图标,如 VisualVM 本身和其他如 NetBeans(例如,请参阅此 dzone 文章中的屏幕截图)。
如何将我的应用程序名称和图标注入 JVM,使其正确显示在 VisualVM 的应用程序列表中?我的应用程序是否需要运行 JRE 1.6 或者我也可以在 1.5 下执行此操作?
我通过NetBeans 论坛帖子回答解决了我自己的一半问题。添加 JVM 命令行参数-Dvisualvm.display.name=FooBar
使 VisualVM 将应用程序显示为“FooBar”。但我仍然无法弄清楚如何影响图标。
更新:唉,我想我找到了图标的答案。这些图标通过 VisualVM 源中的MainClassApplicationTypeFactory硬编码到 VisualVM中,从静态方法 ApplicationTypeFactory.getApplicationTypeFor(Application) 调用。除了制作一个可以注册新类型工厂的 VisualVM 插件外,我看不到任何将新图标注入 VisualVM 的方法——例如 Glassfish 插件通过 GlassFishApplicationTypeFactory.initialize() 来实现。