三好先森|JDK常用监控指令和监控工具及OutOfMemory异常分析( 三 )
jmapjmap:Memory Map for Java , 一款用于生成堆转储快照即dump文件的命令 。 如:
jmap -heap PID//打印出堆内存相关信息jmap -dump:format=b,file=/usr/heap.hprof PID //生成dump文件但是其实上面的常用参数中也有一个参数可以设置 , 一旦发生OutOfMemoryError之后就会自动生成dump文件 , 这对我们分析生产环境发生OOM的原因是非常重要的 。 如下 , 我们再idea中进行设置自动生成dump文件:
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heap.hprof我们利用在JVM系列文章1中所提供的一个堆内存的例子来进行演示一下:
运行之后发生OOM异常 , 然后可以找到对应目录下已经生成了dump文件 。
既然我们生成了dump文件 , 肯定是要对文件进行分析的 , 但是我们怎么分析这个文件呢?因为直接打开时乱码的 , 所以我们肯定需要一款工具来对dump文件进行分析
jhatjhat:JVM Heap Analysis Tool , 一款用来分析dump文件的工具 。 如:
jhat heap.hpro然后访问地址:http://localhost:7000/ 。
可以看到 , 这款工具所展示的信息比较简单 , 而且因为是命令形式的 , 所以很难直接分析出问题 , 一般情况如果有其他工具可以选择的话 , 并不建议使用这款工具来分析 , 接下来我们就来看一看可视化工具的使用
可视化监控工具JConsole工具JConsole:Java Monitoring and Management Console , 是一款JDK自带的可视化监控工具 。 其实就是把上面的比如jstat,jstack等命令工具统计的信息可视化了 , 主要可以查看java应用程序的运行概况、监控堆信息、永久区使用情况、类加载情况等信息 。
JConsole使用方式可以直接在命令行中输入命令:jconsole , 或者直接找到jdk安装目录下找到jconsole.exe执行文件 , 双击打开即可 。
本地连接的话很简单 , 选中一个服务双击即可 , 如果是远程连接 , 需要远程的Java服务在启动的时候就配置JMX相关连接参数 。 进入之后看到如下界面:
可以看到顶部有6个标签可以切换 , 在这里就不详细去介绍每个地方有什么用了 , 自己去尝试的话其实是一目了然的 , 可以看到内存各个区间的使用情况 , 线程信息(线程名字都会展示) , 以及类加载等信息 。
推荐阅读
- 小胖先森|Rare新品官宣:明天将发布高端声学耳机,魅族Ultra
- 车先森|全系224马力,配Bose音响,月销超过了1W台,红旗终于站稳脚跟
- 阿狸先森看了马云任正非雷军一百多个视频,发现一个重大秘密!
- 辛先森科技说|却为何没有成功?和其他特色国产形成对比,民族品牌的联想
- 阿狸先森|我们的手机时时刻刻都在监控我们的一举一动
- 阿狸先森 我们的手机时时刻刻都在监控我们的一举一动
- 阿狸先森还在偷看“不良网站”?这3个坏影响早晚会出现,别装作不知道
- 小胖先森|与Mate40系列同台发布!华为无线头戴式耳机官宣
- 小胖先森 与Mate40系列同台发布!华为无线头戴式耳机官宣
- 辛先森科技说|看到的世界都是真实的吗?,你听到的
