内存管理机制-性能监控与故障处理工具

 

       性能监控与调优的工具主要分为 命令行工具和图形化界面工具

 

RoadMap

112145_leNP_1041012.png

 

1. 命令行工具

JDK中的bin目录下“赠送”了很多体积小(几十KB) 且功能强大的虚拟机监控和故障处理工具。 
这些工具体积小的主要原因并非是 JDK开发团队刻意精炼所致,而是这些工具本身是对 tools.jar类库的一层简单包装,工具主要功能的实现代码都在tools.jar中。如果是Linux版本的JDK,这些工具甚至是有shell编写而成。

需要注意的是,有些工具是基于JMX工作的,在JDK1.5和以前的版本需要添加参数 -Dcom.sun.management.jmxremote 开启JMX管理功能。而在JDK1.6之后的版本中,JMX是默认开启的,无需添加参数

1.1 jps

JVM Process Status Tool 
虚拟机进程状态工具 
jps的功能和ps命令类似,可以列出正在运行的虚拟机进程,并显示虚拟机执行主类的名称,以及这些进程的本地虚拟机的唯一ID(LVMID, Local Virtual Machine Identifier),对于本地虚拟机进程来说,LVMID与炒作系统的进程ID(PID, Process Identifier)是一致的,如果同时启动了多个虚拟机进程,难以靠PID来定位,多数通过jps 命令显示主类来加以区分。

* jps 命令格式: *

jps [options] [hostid] hostid 为 RMI 注册表中的 主机名 默认为 localhost

选项作用
-q只输出LVMID, 省略主类的名称
-m输出虚拟机进程启动时传递给主类main()函数的参数
-l输出主类的全名,如果进程执行的是Jar包,输出Jar路劲
-v输出虚拟机启动时 JVM参数

105242_kX5Y_1041012.png

1.2 jstat

JVM statistics Monitoring Tool 
虚拟机统计信息监视工具 
jstat是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或远程虚拟机进程中的类装载,内存,垃圾收集,JIT编译等运行时数据,在没有GUI图形界面,只提供了纯文本控制台环境的服务器上,它将是运行期定位虚拟机性能问题的首选工具。

* jstat 命令格式: *

jstat [ option vmid [intervals[s|m] [count]] ]

如果是本地虚拟机 vmid 则与LVMID是一致的

如果是远程虚拟机 那vmid的格式应该为 [protocol:]//LVMID[@hostname[:port]/servername]

eg:   interval 和 count代表查询间隔和次数,如果省略这两个参数,说明只查一次。

选项作用
-class监视类装载,卸载数量,总空间及类装载所耗费的时间
-gc监视java堆状况,包括Eden区,2个survivor区,老年代,永久代等容量,已用空间,GC时间合计等信息
-gccapacity监视内容与-gc基本相同,主要关注Java堆各个区域使用到的最大和最小空间
-gcutil监视内容与-gc基本相同,主要关注已使用空间占总空间的百分比
-gccause与-gcutil功能一样,会额外输出导致上一次GC产生的原因
-gcnew监视新生代GC的状况
-gcnewcapacity监视内容与-gcnew基本相同,主要用到的最大和最小空间
-gcold监视老年代GC的状况
-gcoldcapacity监视内容与-gcold基本相同,主要用到的最大和最小空间
-gcpermcapacity输出永久代使用到的最大和最小空间
-compiler输出JIT编译器编译过的方法,耗时等信息
-printcompilation输出已经被JIT编译的方法

113452_eCsk_1041012.png

 

统计的参数详解

  1. S0C — Heap上的 Survivor space 0 区总量
  2. S1C — Heap上的 Survivor space 1 区总量
  3. S0U — Heap上的 Survivor space 0 区已使用的百分比
  4. S1U — Heap上的 Survivor space 1 区已使用的百分比
  5. EC — Heap上的 Eden space 区总量
  6. EU — Heap上的 Eden space 区已使用空间的百分比
  7. OC — Heap上的 Old space 区总量
  8. OU — Heap上的 Old space 区已使用空间的百分比
  9. PC — Perm space 区总量
  10. PU — Perm space 区已使用空间的百分比
  11. YGC — 从应用程序启动到采样时发生 Young GC 的次数
  12. YGCT– 从应用程序启动到采样时 Young GC 所用的时间(单位秒)
  13. FGC — 从应用程序启动到采样时发生 Full GC 的次数
  14. FGCT– 从应用程序启动到采样时 Full GC 所用的时间(单位秒)
  15. GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒)

1.3 jinfo

Java Configuration Info 
Java配置信息工具 
jinfo的作用是实时地查看和调整虚拟机的各项参数。 
这个命令原先只在Linux上提供,在JDK1.6之后 windows平台上也有了,但是在windows平台上jinfo命令有较大的限制只提供最基本的 -flag 选项

* jinfo 命令格式: *

  1. jinfo [option] pid
选项作用
-sysprops输出System.getProperties()内容
-flag name打印指定参数值
-flag [+-]name 或者 -flag name=value

112650_K1ty_1041012.png

1.4 jmap

Java Memory Map 
Java 内存映像工具 
jmap命令用于生成堆快照(heapdump或dump文件)。不仅如此,jmap还可以查询finalize执行队列 堆和永久代的详细信息。 
和jinfo一样,jmap很多功能在windows平台上受限制

* jmap 命令格式: *

  1. jmap [option] vmid
选项作用
-dump生成java堆转出快照。格式为:-dump:format=b,file=<filename>
-histo显示堆中对象的统计信息,包括类,实例数量和合计容量
-finalizerinfo显示在F-Queue中等待Finalizer线程执行finalize方法的对象,只在Linux/Solaris平台下有效
-heap显示java堆详细信息
-permstat以ClassLoader为统计口径显示永久代内存状态,只在Linux/Solaris平台下有效
-F当-dump选项没有响应时,强制生成dump快照,只在Linux/Solaris平台下有效

113149_dQXk_1041012.png

112827_OfbU_1041012.png

1.5 jhat

Java Heap Analysis Tool 
虚拟机堆转储快照分析工具 
jhap与jmap搭配使用用来分析 jmap生成的快照文件。jhap内置一个微型的HTTP/HTML服务器 
生成dump文件分析结果后,可以在浏览器中查看 http://localhost:7000 
 

113223_9Zwm_1041012.png

113255_j4S4_1041012.png

1.6 jstack

JVM Strack Trace 
Java 堆栈跟踪工具 
jstack的功能用于生成虚拟机当前时刻的线程快照(一般称为threaddump或javacore文件)。 
线程快照就是当前虚拟机内每一条线程正在执行方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程死锁,死循环,请求外部资源等。

* jstack 命令格式: *

  1. jstack [option] vmid
选项作用
-F当正常输出的请求不被响应时,强制输出线程堆栈
-m如果调用到本地方法,可以显示C/C++的堆栈
-l除堆栈外,显示关于锁的附加信息

113400_Y9wE_1041012.png

2. 图形化界面工具

2.1 JConsole

Java Monitoring and Management Console 
Jconsole 是一款基于JMX的可视化监视和管理工具。部分功能针对于JMX MBean进行管理。 
JConsole 位于 bin/jConsole.exe

JConsole 其实 是 命令行工具的一种整合,里面的标签页对应的是JDK的命令行工具 如 Memory标签页: 相当于 jstat命令

113556_dizR_1041012.png

113616_jEMy_1041012.png

 

2.2 VisutalVM

All-in-One Java Troubleshooting Tool 
多合一故障处理工具 
随着JDK发布的功能最强大的运行监视和故障处理程序。从JDK1.6 update 7开始 已经作为官方故障处理工具加入到 bin\jvisualvm.exe

113743_Fo5b_1041012.png

VisualVM 是基于NetBeans 平台发开的,因此它一开始就具备了插件扩展功能的特性 
 

113824_hR4v_1041012.png

转载于:https://my.oschina.net/u/1041012/blog/915388

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值