jconsole/visualvm 如何知道本地 运行 java 应用程序

how does jconsole/visualvm know local running java apps

当您启动 jconsole 或 visualvm 时,它们会向您显示一个 "locally running java apps" 可以附加和监视的列表。

它如何知道 运行 本地存在哪些应用程序?

引自 VisualVM documentation(在 何时需要显式 JMX 连接? 部分进行了描述并涉及本地实例):

Java VisualVM discovers running applications using the jps tool (Solaris, Linux, or Mac OS X or Windows), which can only discover Java applications started by the same user as the one who starts the Java VisualVM tool.

有关 jps 如何发现本地 VM 的信息,例如,在 SO 答案中。简而言之,它会扫描 JVM 实例生成信息文件的 /tmp/hsperfdata_<username> 目录。