我遇到了一个与其他SO问题(jps returns no output even when java processes are running)非常相似的问题。在我读到这个问题之前,我认为我的问题是jstatd没有运行,但该问题的解决方案意味着jps使用某种临时文件。我也意识到可以在没有任何网络活动的情况下监视本地JVM,我很好奇它是如何工作的。我不是要求解决我的问题,我只是想知道jps和其他人如何在本地工作。让我感到惊讶的是,在Java开发这么多年后,我根本不知道它。
答案 0 :(得分:1)
在本地使用的情况下,MonitoredHost的默认实现是sun.jvmstat.perfdata.monitor.protocol.local.MonitoredHostProvider,它使用sun.jvmstat.perfdata.monitor.protocol.local.LocalVmManager。它的方法activeVms(),正在完成实际工作,循环遍历用户临时目录中的文件,搜索具有已知文件名格式的文件,其中启动的JVM发布其监视数据。我怀疑没有TCP。有趣。