一、JDK自带工具盘点:
jstat:性能分析-查看gc情况;
jmap:内存分析-堆信息;
jstack:线程分析-栈信息;
jinfo:参数查看及配置;
jstatd:启动jvm监控服务。它是一个基于rmi的应用,向远程机器提供本机jvm应用程序的信息。默认端口1099;
jdb :JDB是基于文本和命令行的调试工具;
jhat:用于对JAVA heap进行离线分析的工具,他可以对不同虚拟机中导出的heap信息文件进行分析,如LINUX上导出的文件可以拿到WINDOWS上进行分析,可以查找诸如内存方面的问题;
jps : jps是用来查看JVM里面所有进程的具体状态, 包括进程ID,进程启动的路径等等;
jconsole:是基于JAVA Management Extensions (JMX)的实时图形化监测工具,这个工具利用了内建到JVM里面的JMX指令来提供实时的性能和资源的监控,包括了JAVA程序的内存使用,堆和线程信息,类的分配状态和空间使用、检测死锁等;
JVisualVM: jvisualvm是jdk1.6以后带上的工具,是升级版的jconsole,且支持插件拓展;
jstat、jmap、jstack、jdb、jconsole都是1.6之前,之后JVisualVM替代。所以,JDK自带工具则只要使用jps、jVisualVM和jStatd即可。
二、常用工具使用
jps:
jstatd:
jstatd只能够监控具有适当的本地访问权限的JVM。因此,jstatd进程必须以与目标JVM相同的用户凭证来运行。
jVisualVM:
安装插件: 插件市场:VisualVM: Plugins Centers
都可以去选中安装插件
点击线程可以查看是否检查到死锁的状态
查看堆:
搭档jstatd远程监控:
cd /usr/local/java/jdk1.8.0_311/jre/lib/management
cp jmxremote.password.template jmxremote.password
chmod 644 jmxremote.password
再到java的bin目录下创建一个文件jstatd.all.policy,内容为
grant codebase "file:/usr/local/java/jdk1.8.0_311/lib/tools.jar" {
permission java.security.AllPermission;
};
启动服务
jstatd -J-Djava.security.policy=/usr/local/java/jdk1.8.0_311/bin/jstatd.all.policy -p 1099 &
验证启动成功:
netstat -anp |grep jstatd
注意:云服务器记得除了1099外还需开启对应的端口访问权限
打开JvisualVM,右键远程,添加服务器主机,高级设置或添加jstatd链接默认端口1099,则等待自动刷新即可显示。
对应版本官方手册:Java Platform, Standard Edition Documentation - Releases