深入理解java虚拟机第四章笔记

第四章 虚拟机性能监控与故障处理工具

一 JDK的命令工具

1. jps:虚拟机进程状况工具

可以列出正在运行的虚拟机进程,并显示虛拟机执行主类(Mam Class,main ( ) 函数所在的类)名称,以及这些进程的本地虛拟机唯一ID ( Local Virtual Machine Identifier,LVMID ) 。对于本地虚拟机进程来说,LVMID与操作系统的进程ID ( Process Identifier,PID ) 是一致的。

jps的参数:
-q   只输出LVMID,省略主类的名称
-m 输出虚拟机进程启动时传递给主类main()函数的参数
-l    输出主类的全名,如果进城执行的Jar包,则输出Jar路径

-v   输出虚拟机进程启动时JVM参数

例如:


2. jstat:虚拟机统计信息监视工具

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

例如:Eden区使用了40%,Young GC发生了760次


3. jinfo:java配置信息工具

 jinfo(Configuration Info for Java)实时的查看和调整虚拟机的各项参数,使用jps命令的-v参数可以查看虚拟机启动时显式指定的参数列表,但如果想知道未被显式指定的参数的系统默认值,除了找资料外,就只能使用jinfo的-flag选项进行查询了。

例如:查询CMSInitiatingOccupancyFraction参数值


4. jmap:java内存映像工具

用于生成堆转储快照(一般称为heapdump或dump文件 )。还可以查询finalize执行队列、Java堆和永久代的详细信息,如空间使用率、当前用的是哪种收集器等。

5. jhat:虚拟机堆转储快照分析工具

与jmap搭配使用,来分析jmap生成的堆转储快照。(不常用)

6. jstack:java堆栈跟踪工具

用于生成虚拟机当前时刻的线程快照(一般称为 threaddump或者javacore文件 )。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合 ,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等都是导致线程长时间停顿的常见原因。线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做些什么事情,或者等待着什么资源。

例如:使用jstack查看线程堆栈


7. HSDIS:JIT生成代码反汇编

二 JDK的可视化工具

1. JConsole


其中内存页签相当于可视化的jstat命令,而线程页签相当于可视化的jstack命令,遇到线程停顿时可以使用这个页签进行分析。


2. VisualVM

显示虚拟机进程以及进程的配置、环境信息(jps、 jinfo)。
监视应用程序的CPU、GC、堆、方法区以及线程的信息(jstat、jstack)。
dump以及分析堆转储快照(jmap、jhat)。
方法级的程序运行性能分析,找出被调用最多、运行时间最长的方法。
离线程序快照:收集程序的运行时配置、线程dump、内存dump等信息建立个快照, 可以将快照发送开发者处进行Bug反馈。
其他plugins的无限的可能性……


猜你喜欢

转载自blog.csdn.net/llcream/article/details/80103237