JDK命令行工具
jps:虚拟机进程状况工具
jps (JVM Process Status Tool),其功能与ps命令类似。jstat:虚拟机统计信息监视工具
jstat(JVM statistics Monitoring Tool)是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,它是运行期定位虚拟机性能问题的首选工具。例如,$ jstat -gcutil 5941 250 2
S0 S1 E O P YGC YGCT FGC FGCT GCT
75.92 0.00 16.44 38.11 78.50 392 15.151 0 0.000 15.151
75.92 0.00 16.44 38.11 78.50 392 15.151 0 0.000 15.151
命令表示监视进程号为5941的垃圾收集情况,输出数据为百分比。每250秒采样一次,共采样2次。在结果中的第一行分别表示Survivor0,Survivor1,Eden,Old,Permanent,Young GC次数,Young GC总耗时,Full GC次数,Full GC总耗时,所有GC总耗时。
jinfo: java配置信息工具
jinfo(Configuration Info for Java)的作用是实时地查看和调整虚拟机各项参数。使用jps -v命令可以查看虚拟机启动时显示指定的参数列表,但如果想知道未被显示指定的参数的系统默认值,则可以使用jinfo的-flag选项进行查询。jinfo -sysprops 5941 //输出虚拟机进程的System.getProperties()的内容
jinfo -flags 5941 //输出VM flags
jinfo -flag +Dcom.sun.management.jmxremote.ssl=false 5941
jmap:java内存映像工具
jmap(Memory Map for Java)命令用于生成堆转储快照(一般称为heapdump或者dump文件)。Jmap的作用不仅仅是为了获取dump文件,它还可以查询finalize执行队列、java堆和永久代信息,如空间使用率,当前使用的是哪种收集器等。例如:jmap -heap 5941
jmap -dump:format=b,file=/tmp/test.txt 5941
jhat:虚拟机堆转储快照分析工具
jhat(JVM Heap Analysis Tool)命令与jmap搭配使用,来分析jmap生成的堆转储快照。Jhat内置了一个微型的HTTP/HTML服务器,生成dump文件的分析结果后,可以在浏览器中查看。实际过程中用的比较少,因为一般不会再部署应用程序的服务器上直接分析dump文件,即使可以这样做,也会尽量将dump文件复制到其他机器上进行分析,因为分析工作是一个耗时而且消耗硬件资源的过程;另外是jhat的分析功能相对比较简陋,visualvm以及专业用于分析dump文件的eclipse memory analyzer等工具,都能实现比jhat更强大更专业的分析功能。jstack:java堆栈跟踪工具
jstack(Stack Trace for Java)命令用于生成虚拟机当前时刻的线程快照(一般称为threaddump或者javacore文件)。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等都是导致线程长时间停顿的常见原因。例如,jstack -l 5941hprof 性能统计信息
JDK可视化工具
jconsole:java监视与管理控制台
内存监控“内存”页签相当于可视化的jstat命令,用于监视受收集器管理的虚拟机内存(java堆和永久代)的变化趋势。
线程监控
“线程”页签相当于可视化的jstack命令,遇到线程停顿时可以使用这个页签进行监控分析。
visualvm:多合一故障处理工具
利用visualVm可以做到:显示虚拟机进程以及进程的配置,环境信息(jps、jinfo)
监视应用程序的CPU、GC、堆、方法区以及线程的信息(jstat、jstack)
dump以及分析堆转储快照(jmap、jhat)
方法级的程序运行性能分析,找出被调用最多、运行时间最长的方法。
离线程序快照:手机程序的运行时配置、线程dump、内存dump等信息简历一个快照,可以将快照发送开发者处进行Bug反馈。
其他plugins的无限的可能性....