一. jps (Java Virtual Machine Process Status Tool)——主要用来输出JVM中运行的进程状态信息
语法格式: jps [options] [hostid] 如果不指定hostid默认为当前服务器
options:
-q:不输出类名,JAR文件名和通过main方法传递的参数,仅生成本地VM标识符列表
-m:输出通过main方法传递的参数,对于嵌入式JVM,输出可能为null
-l:输出main方法的完整程序包名称或JAR文件的完整路径名
-v:输出传递给JVM的参数
-V:输出通过标志文件传递给JVM的参数(例如:.hotspotrc文件或由-XX:Flags = <文件名>参数指定的文件)
-J (option):将选项传递给java程序(例如:-J-Xms48m将启动内存设置为48兆字节。 -J通过是一个通用的约定执行用Java编写的应用程序的底层VM选项)
注意:如果需要查看其他机器上的jvm进程,需要在待查看机器上启动jstatd
二. jstatd (Java Virtual Machine jstat Daemon)——监听远程服务器的CPU,内存,线程等信息
语法格式:jstatd [options]
options:
-nr:当没有找到现有的RMI注册表时,不会尝试在jstatd进程中创建内部RMI注册表
-p port:希望找到RMI注册表的端口号,或者如果未找到,则在未指定-nr的情况下创建RMI注册表
-n rminame:远程RMI对象在RMI注册表中绑定的名称。 默认名称是JStatRemoteHost。 如果多个jstatd服务器在同一主机上启动,通过指定该选项,可以使每个服务器导出的RMI对象的名称唯一。 但是,这样做将需要保证在监视客户端的hostid和vmid中存在唯一的服务器名称。
-J (option):将选项传递给java程序(例如:-J-Xms48m将启动内存设置为48兆字节。 -J通过是一个通用的约定执行用Java编写的应用程序的底层VM选项)
上面所说的一切都是建立在jstatd服务器启动的情况下,启动如下:(谨防使用)
1. 创建jstatd服务器授权文件jstatd.all.policy,代码如下,然后将改文件放到Java/bin目录下。
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
2. 切换到java/bin目录下,启动Jstatd服务器,默认端口是1099
./jstatd -J-Djava.security.policy=jstatd.all.policy
3. 如若出现端口占用问题,在启动jstatd服务器时选择其它端口。
//查看端口是否被占用命令
lsof -i:1099
//启动jstatd服务器时,指定其它端口
rmiregistry 2000 & jstatd -J-Djava.security.policy=jstatd.all.policy -p 2000
4. jstatd服务器启动成功后,在VisualVM添加Jstatd服务器地址,就会自动连接成功,并获取服务器的CPU,内存,线程等信息。