即前期写的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分析功能更强大,能改分析系统运行情况,分析内存泄漏和方法执行。