我想知道,JPS工具如何获得它在jvm进程中执行的主类的名称。它是
jps -l
123 package.MainClass
456 /path/example.jar
我正在谈论Linux(我对Windows不感兴趣,而且我没有Win机器可以进行实验)。
我可以想到两种方式
/proc
文件系统关于第一种替代方案,它是否使用本地JMX连接?仍然,它必须去/proc
的pids。
jps
也列出了自己关于第二种选择,我觉得这可能是正确的,因为
-jar
或MainClass
但是,我在这里面临的问题很少。当java命令很长时(例如,/proc
参数非常长),有关命令行的信息不适合jps
中为其保留的空间。我的系统有4kB,而我在其他地方学到的,这是在OS代码中硬连线(改变它需要内核编译)。然而,即使在这种情况下,/proc
仍然能够在某个地方获得那个主要类。怎么样?
我需要找到更快的方法来获取JVM进程而不是调用-classpath
。当系统负载很大时(例如,当JVM的数量开始时),/proc
卡住了几秒钟(我已经看到它等待了~30秒)。
jps
扫描包含运行JVM的监视器和计数器的jps
文件。名为jps
的监视器包含您要查找的字符串。
要找出PerfData文件的格式,您必须查看jps
。