即前期写的JVM内存模型后,补上JVM监控工具,便于更好的监控JVM的运行情况和快速定位恶性代码位置。本文将着重介绍一下三种监控方式
1:命令行
2:Jconsole
3:jvisualvm
1:命令行
1:JPS : 列出正在运行的JVM进程
2:TOP : 查看进程资源占用情况
3:JSTAT : 查看各种GC指标
例如查看GC情况 jstat -gcutil pid
4:JINFO : 查看配置信息
5:JMAP :内存映射工具
6:JHAT : jvm堆快照分析工具
7:JSTACK : java堆栈跟踪工具
2:JconsoleJCONSOLE为可视化的JVM监控工具,很直观的监控JVM的内存和CPU运行情况
1:运行JCONSOLE
终端命令 jconsole
启动后
即可链接本地也可链接远程,链接后可直接可视化的查看JVM具体情况。
注意:远程链接需要添加一下启动参数
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8899
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
2:概览
3:内存模块
1:可监控各个区域的内存使用情况
2:可监控整理GC情况,GC次数和所耗时间
4:线程模块
1:可直观监控线程峰值和当前活跃数
2:可监控每个线程的状态和是否死锁
5:类加载模块
监控总共加载类的总数和卸载的数量
6:JVM概要
7:MBean
监控一些对象
如:tomcat的链接对象
对象属性
对象方法
以上所属全部内容都是jvm内置的对象进行收集的,工具只是展示而已。
3:jvisualvmJVISUALVM和JCONSOLE一样都是可视化的JVM监控工具,号称 all in one.功能更加齐
1.启动jvisualvm
终端直接输入 jvisualvm
同样可以监控本地和远程
2.概要
3.监视
4.线程
5.分析器
6.CPU抽样
可监控抽样时间内方法和线程的工作状况,能直观的统计比较耗时的方法。
7.内存抽样
可抽样分析指定时间内内存快照,通过滞留对象占比可分析是否存在内存泄漏等。
8.插件
工具 --> 插件
jvisualvm提供了各种插件,可自行安装使用。
总结
jconsole对内存监控做的更好,可以详细的看到各个区域内存分布和GC情况。
jvisualvm分析功能更强大,能改分析系统运行情况,分析内存泄漏和方法执行。