JPS工具如何获取正在执行的主类或jar的名称

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JPS工具如何获取正在执行的主类或jar的名称相关的知识,希望对你有一定的参考价值。

我想知道,JPS工具如何获得它在jvm进程中执行的主类的名称。它是

jps -l
123   package.MainClass
456   /path/example.jar

我正在谈论Linux(我对Windows不感兴趣,而且我没有Win机器可以进行实验)。

我可以想到两种方式

  1. 连接到有问题的JVM,然后告诉它
  2. 来自/proc文件系统

关于第一种替代方案,它是否使用本地JMX连接?仍然,它必须去/proc的pids。

  1. 有PID,所以无论如何它必须要求操作系统
  2. jps也列出了自己

关于第二种选择,我觉得这可能是正确的,因为

  1. 在命令行上,有-jarMainClass
  2. qazxsw poi非常了解PID
  3. 在qazxsw poi开始做某事之前,它在qazxsw poi中有自己的文件夹

但是,我在这里面临的问题很少。当java命令很长时(例如,/proc参数非常长),有关命令行的信息不适合jps中为其保留的空间。我的系统有4kB,而我在其他地方学到的,这是在OS代码中硬连线(改变它需要内核编译)。然而,即使在这种情况下,/proc仍然能够在某个地方获得那个主要类。怎么样?

我需要找到更快的方法来获取JVM进程而不是调用-classpath。当系统负载很大时(例如,当JVM的数量开始时),/proc卡住了几秒钟(我已经看到它等待了~30秒)。

答案

jps扫描包含运行JVM的监视器和计数器的jps文件。名为jps的监视器包含您要查找的字符串。

要找出PerfData文件的格式,您必须查看jps

以上是关于JPS工具如何获取正在执行的主类或jar的名称的主要内容,如果未能解决你的问题,请参考以下文章

java jps

jps:虚拟机进程状况工具

13.2.虚拟化工具--jstat

JVM-性能监控基础命令

JDK监控及故障处理工具使用

Java虚拟机常用工具