jps
如何获取所有本地java
进程的信息?它是否连接到某个本地服务器进程来获取信息?jinfo, jstat, jmap
和jstack
如何获取有关本地java
进程的信息?它们是否连接到一些本地服务器进程来获取信息?jstatd
是否仅用于提供对本地java
进程的远程访问,而不用于提供对本地java
进程的本地访问?
我在运行Ubuntu。我的问题来自https://stackoverflow.com/a/55669949/156458。
jps
如何获取所有本地java
进程的信息?它是否连接到某个本地服务器进程来获取信息?jinfo, jstat, jmap
和jstack
如何获取有关本地java
进程的信息?它们是否连接到一些本地服务器进程来获取信息?jstatd
是否仅用于提供对本地java
进程的远程访问,而不用于提供对本地java
进程的本地访问?
我在运行Ubuntu。我的问题来自https://stackoverflow.com/a/55669949/156458。
1条答案
按热度按时间yzuktlbb1#
jps
通过扫描/tmp/hsperfdata_<username>
目录来查找正在运行的Java进程。每个基于HotSpot的Java进程在此目录中创建一个文件,其名称等于进程ID。文件
/tmp/hsperfdata_<username>/<pid>
包含JVM导出的各种计数器。这些计数器可以由外部进程读取。这就是jstat
的工作方式。我描述了JavaMagazine article中的jvmstat性能计数器。因此,
jstat
始终可以读取本地Java进程的计数器,但为了能够监视远程机器,jstatd
需要运行。jmap
、jstack
和jinfo
使用动态连接机制。这些实用程序通过UNIX域套接字连接到目标JVM,并向JVM发送相应的命令。该命令由远程JVM本身执行。在本答案和本演示文稿中了解有关动态附加的更多信息。