三好先森|JDK常用监控指令和监控工具及OutOfMemory异常分析( 四 )


VisualVM工具VisualVM:All-in-one Java TroubleshootingTool , 是JDK发布的一款功能最强大的运行监控故故障处理工具 , 正如名字所说的All-in-one , 可以预见这是一款功能非常齐全的工具 。 VisualVM主要功能如下:

  • 显示虚拟机进程及进程的配置环境信息(jps、jinfo功能) 。
  • 监视应用程序的CPU、GC、堆、方法区和线程信息(jstat、jstack功能) 。
  • dump文件生成及分析(jmap、jhat功能) 。
  • 方法级的程序性能分析 , 可以找出被调用最多 , 运行时间最长的方法 。
  • 离线程序快照:收集程序运行时配置、线程dump、内存dump等信息建立一个快照 , 并可以将快照发送开发者处进行Bug反馈
  • 插件化处理 , 可以有无限扩展的可能性
打开VisualVM工具的方式可以直接在命令行中输入命令:jvisualvm , 或者直接找到jdk安装目录下找到jvisualvm.exe执行文件 , 双击打开即可 。
三好先森|JDK常用监控指令和监控工具及OutOfMemory异常分析打开之后在左边选择自己的本地或者远程应用(同样需要远程服务支持JMX服务)之后 , 可以看到右边界面 , 注意 , 默认只有前面5个页签 , 最后一个页签是插件加入进来的 , 不同的插件可以看到不同的功能 , 我这边选择的插件是com-sun-tools-visualvm-modules-visualgc.nbm插件 , 这是一个比较有意思的插件 , 我们在之前分析Java堆内存划分的一篇文章中提到了一个对象的在堆内的流转图 , 这个插件打开之后可以动态演示堆内各个区域内存变化 , 感兴趣的可以尝试下 。
插件使用和下载点击主界面工具栏内:工具–>插件–>已下载–>添加插件 , 然后安装即可 , 如下图:
三好先森|JDK常用监控指令和监控工具及OutOfMemory异常分析安装之后重新打开就可以看到多了一个页签 , 打开之后可以实时监控内存变化
三好先森|JDK常用监控指令和监控工具及OutOfMemory异常分析在插件页面点击设置可以看到最新的插件下载地址(需要vpn才能连接):
三好先森|JDK常用监控指令和监控工具及OutOfMemory异常分析分析dump文件假如生产环境发生OutOfMemoryError , 我们拿到dump文件之后 , 就可以借助VisualVM来使用 , 点击工具栏中文件–>装入(注意要选择文件类型) , 然后找到对应的dump文件就可以打开了
三好先森|JDK常用监控指令和监控工具及OutOfMemory异常分析打开之后点击“类”:
三好先森|JDK常用监控指令和监控工具及OutOfMemory异常分析可以看到是Integer对象撑爆了内存 , 因为上面的例子是是一个非常简单的demo , 就是不断地往list中添加了Integer数据 , 所以结合工具可以非常清晰的看到是这个对象出了问题 , 从而定位到问题所在 。
这个工具也可以直接dump文件:
三好先森|JDK常用监控指令和监控工具及OutOfMemory异常分析这个工具也可以实时设置自动dump文件分析:
三好先森|JDK常用监控指令和监控工具及OutOfMemory异常分析总之这是款非常强大的工具 , 还有其他许多功能 , 而且插件化工作原理使得其提供了无限的功能扩展 , 有兴趣的可以自己去官网下载不同的插件下来进行试用


推荐阅读