如何为VisualVM"<未知应用程序>"命名?

Chr*_*lan 21 java jmx visualvm

JDK 1.6捆绑了一个名为VisualVM的便捷工具,可以让您检查并运行正在运行的Java进程.一个功能是它可以自动检测本地计算机上正在运行的JVM.大多数都列为"(pid xxxx)",但有些名称和图标,如VisualVM本身和其他类似NetBeans(例如,请参阅此dzone文章中的屏幕截图).

如何将我的应用程序名称和图标注入JVM,以便它在VisualVM的应用程序列表中正确显示?我的应用程序是否需要运行JRE 1.6或者我是否可以在1.5下运行?

Chr*_*lan 29

我通过NetBeans论坛帖子回答解决了我自己的一半问题.添加JVM命令行arg -Dvisualvm.display.name=FooBar使VisualVM将应用程序显示为"FooBar".但我仍然无法弄清楚如何影响图标.

更新:唉,我想我找到了我的图标答案.这些图标通过VisualVM源中的MainClassApplicationTypeFactory硬编码到VisualVM 中,从静态方法ApplicationTypeFactory.getApplicationTypeFor(Application)调用.除了制作一个可以注册新类型工厂的VisualVM插件之外,我看不到有任何方法可以向VisualVM注入新图标 - 例如,Glassfish插件通过GlassFishApplicationTypeFactory.initialize()来实现.

  • 如果要在进程名称中包含空格,请使用不间断空格(U + 00AD). (6认同)
  • 给未来读者的更多建议:在我看来,您的应用名称中不能包含空格。也就是说,-Dvisualvm.display.name = Foo Bar和-Dvisualvm.display.name =“ Foo Bar”不起作用。 (3认同)