《深入理解Java虚拟机》学习笔记。
在定位问题的时候,知识和经验是关键基础,数据是依据,而工具是运用知识处理数据的手段…
jps
命令可以列出正在运行的虚拟机进程。
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jps.html
jps: 虚拟机进程状况工具
1 简介
jps(JVM Process Status Tool)和unix的ps命令相似:列出正在运行的虚拟机进程,并显示虚拟机执行主类(main函数的类)的名称,以及这些进程的本地虚拟机唯一ID(Local Virtual Machine Identifier, LVMID)。
2 原理
Java程序启动后,会在java.io.tmpdir
临时目录下生成用户的临时目录(通常linux系统下是/tmp/hsperfdata_{userName}/
),该目录下存放的便是该用户下的Java进程信息文件,文件名即为进程号PID,jps命令便是解析这些文件来展示相应的信息。该文件便是PerfData
文件。
示例:
1 | ll /tmp/hsperfdata_hadoop |
3 用法
3.1 本地模式
jpa命令格式:
1 | jps [ options ] [ hostid ] |
1 | jps -help |
选项(options):
选项 | 说明 |
---|---|
-q | 只输出LVMID,省略主类的名称 |
-m | 输出虚拟机进程启动时传递给主类main()函数的参数 |
-l | 输出主类的全名,如果进程执行的是jar包,输出jar包的路径 |
-v | 输出虚拟机进程启动时JVM参数 |
hostid :
jsp可以通过RMI协议查询开启了RMI服务的远程虚拟机进程状态,hostid
为RMI注册表中注册的主机名。
RMI协议是什么?
RMI(Remote Method Invocation)远程方法调用。与RPC有什么区别呢?
RPC(Romote Produce Call Protocal)远程过程调用,是网络层的协议,而RMI是该协议在Java中的具体实现。
3.2 远程模式
远程模式下,需要在远程服务器开启jstatd
服务。
首先,需要设置Java安全策略权限。
1 | 创建安全策略文件:jstatd.all.policy |
启动jstatd
:
1 | jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=10.10.10.22 |
远程访问:
1 | jps 10.10.10.22 |
4 实战
示例 1 :只查看本地虚拟机ID(基本没用)
1 | jps -q |
示例 2 :查看启动输入参数(没有参数时,只显示调用的jar包和主类)
1 | jps -m |
示例 3 :查看主类全名(没有参数时,只显示调用的jar包和主类)
1 | jps -m |
示例 4:查看启动时的JVM参数
1 | jps -v |
5 总结
在实际中,我们常用jps -lvm
查看当前java进程。
6 Ths
54686973 20617274 69636C65 20697320 64656469 63617465 6420746F 20526F6E 67657220 77686F20 49206465 65706C79 206C6F76 65642E
本文链接: https://stefanxiepj.github.io/archives/fcb4f46d.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
![知识共享许可协议](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png)