JVM笔记 – 自动内存管理机制(虚拟机性能监控与故障处理工具)
本文由发表于3年前 | J2EE | 暂无评论 |  被围观 1,963 views+
虚拟机性能监控与故障处理工具1、概述2、JDK的命令行工具2.1、jsp: 虚拟机进程状况工具2.2、jstat: 虚拟机统计信息监视工具2.3、jinfo: Java配置信息工具2.4、jmap: Java内存映象工具2.5、jhat: 虚拟机堆转储快照分析工具2.6、jstack: Java堆栈跟踪工具2.7、HSDIS: JIT生成代码反汇编3、JDK的可视化工具3.1、JConsole: Java监视与管理控制台3.2、VisualVM: 多合一故障处理工具3、本章小结
《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》笔记 - 自动内存管理机制(虚拟机性能监控与故障处理工具)
虚拟机性能监控与故障处理工具
1、概述

给一个系统定位问题的时候,知识、经验是关键基础,数据是依据,工具是运用知识处理数据的手段。这里说的数据包括:运行日志、异常堆栈、 GC 日志、线程快照( threaddump/ javacore 文件)、堆转储快照( heapdump/ hprof 文件)等。

2、JDK的命令行工具

如果读者在工作中需要监控运行于 JDK 1. 5 的虚拟机之上的程序,在程序启动时请添加参数"- Dcom. sun. management. jmxremote" 开启 JMX 管理功能,否则由于部分工具都是基于 JMX( 包括 4. 3 节介绍的可视化工具),它们都将会无法使用,如果被监控程序运行于 JDK 1. 6 的虚拟机之上,那 JMX 管理默认是开启的。

2.1、jsp: 虚拟机进程状况工具

jps的功能也和 ps 命令类似:可以列出正在运行的虚拟机进程,并显示虚拟机执行主类( Main Class, main() 函数所在的类)名称以及这些进程的本地虚拟机唯一 ID。

jps -l

选项说明

20141126-jvm001

2.2、jstat: 虚拟机统计信息监视工具

jstat可以显示本地或者远程[ 1] 虚拟机进程中的类装载、内存、垃圾收集、 JIT 编译等运行数据

jstat -gcutil 2764

选项说明

20141126-jvm002

2.3、jinfo: Java配置信息工具

jinfo( Configuration Info for Java) 的作用是实时地查看和调整虚拟机各项参数。

JDK1.6以上版本java- XX:+ PrintFlagsFinal 查看参数默认值也是一个很好的选择

jinfo 还可以使用- sysprops 选项把虚拟机进程的 System. getProperties() 的内容打印出来

使用- flag[+|-] name 或者- flag name= value 修改一部分运行期可写的虚拟机参数值。

jinfo -flag CMSInitiatingOccupancyFraction 1444

2.4、jmap: Java内存映象工具

jmap( Memory Map for Java)命令用于生成堆转储快照。

-XX:+HeapDumpOnOutOfMemoryError 参数,可以让虚拟机在 OOM 异常出现之后自动生成 dump 文件,通过- XX:+ HeapDumpOnCtrlBreak 参数则可以使用[ Ctrl]+[ Break] 键让虚拟机生成 dump 文件,又或者在 Linux 系统下通过 Kill- 3 命令发送进程退出信号“吓唬”一下虚拟机,也能拿到 dump 文件。

jmap [option] vmid

选项说明

20141126-jvm003

使用 jmap 生成一个正在运行的 Eclipse 的 dump 快照文件的例子:

jmap -dump:format=b, file=eclipse.bin 3500
2.5、jhat: 虚拟机堆转储快照分析工具

一般都不会去直接使用 jhat 命令来分析 dump 文件。

2.6、jstack: Java堆栈跟踪工具

jstack( Stack Trace for Java)命令用于生成虚拟机当前时刻的线程快照

生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等都是导致线程长时间停顿的常见原因。线程出现停顿的时候通过 jstack 来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做些什么事情,或者等待着什么资源。

jstack[ option] vmid

选项说明

20141126-jvm004

在实际项目中不妨调用这个方法做个管理员页面,可以随时使用浏览器来查看线程堆栈。

查看线程状况的JSP页面

2.7、HSDIS: JIT生成代码反汇编

随着技术的发展,高性能虚拟机真正的细节实现方式已经渐渐与虚拟机规范所描述的内容产生了越来越大的差距,虚拟机规范中的描述逐渐成了虚拟机实现的“概念模型”。

HSDIS的作用是让 HotSpot 的- XX:+ PrintAssembly 指令调用它来把动态生成的本地代码还原为汇编代码输出,同时还生成了大量非常有价值的注释。

3、JDK的可视化工具
3.1、JConsole: Java监视与管理控制台
3.2、VisualVM: 多合一故障处理工具
3、本章小结
除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/jvm-note-automatic-memory-management-mechanism-3.html
关键字: ,
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2014 11/26
如果您有更好的原创技术博文或者观点,欢迎投稿:admin@itzhai.com,或者关注订阅左侧浮动面板的微信号订阅IT宅itread)发送消息。
文章评论
    没有评论
给我留言

有人回复时邮件通知我
J2EE的相关文章
随机文章 本月热门 热评
1 使用Velocity生成静态页面减轻数据库压力提升网站性能 2011/10/5
2 C语言语法笔记汇总 | IT宅文章归档 AD 2011/11/14 2011/11/14
3 Java基础笔记 – 字符流分类详细介绍和各种字符流类介绍与使用 字符集 2011/10/22
4 Java基础笔记 – hashCode()与equals()方法的介绍和使用场合 2011/10/11
5 Java基础笔记 – Annotation注解的介绍和使用 自定义注解 2011/11/2
6 Java中内存泄露的分析 2014/11/10
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
猜您喜欢
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.