JDK 部分工具使用方法

javap.exe

javap是一个Java类文件反汇编程序,可以查看Java编译器生成的字节码,是分析代码的一个好工具。

1、javac xx.java
2、javap -c xx      or    javap xx

  

jvisualvm

jvisualvm是一个Java虚拟机监控和分析工具,该工具提供了一个图形界面窗口,并且可以直观的了解Java应用程序的运行时信息。jvisualvm集成了许多工具,比如像jmp、jinfo、jstat、jstack、JConsole等。

jstat

-class:统计class loader行为信息 
-compile:统计编译行为信息 
-gc:统计jdk gc时heap信息 
-gccapacity:统计不同的generations(包括新生区,老年区,permanent区)相应的heap容量情况 
-gccause:统计gc的情况,(同-gcutil)和引起gc的事件 
-gcnew:统计gc时,新生代的情况 
-gcnewcapacity:统计gc时,新生代heap容量 
-gcold:统计gc时,老年区的情况 
-gcoldcapacity:统计gc时,老年区heap容量 
-gcpermcapacity:统计gc时,permanent区heap容量 
-gcutil:统计gc时,heap情况 
-printcompilation:不知道干什么的,一直没用过。 
一般比较常用的几个用法: 

jstat -class 18212 1000 10(每隔1秒监控一次,一共做10次)

  Loaded:Number of classes loaded.

  Bytes:Number of Kbytes loaded.

  Unloaded:Number of classes unloaded.

  Bytes:Number of Kbytes unloaded.

  Time:Time spent performing class load and unload operations.



jstat -gc 18212 2000 20 (每隔2秒监控一次,共20次)

  S0C:Current survivor space 0 capacity (KB).

  S1C:Current survivor space 1 capacity (KB).

  S0U:Current survivor space 0 utilization (KB).

  S1U:Current survivor space 1 utilization (KB).

  EC:Current eden space capacity (KB).

  EU:Eden space utilization (KB).

  OC:Current old space capacity (KB).

  OU:Old space utilization (KB).

  PC:Current permanent space capacity (KB).

  PU:Permanent space utilization (KB).

  YGC:Number of young generation GC Events.

  YGCT:Young generation garbage collection time.

  FGC:Number of full GC events.

  FGCT:Full garbage collection time.

  GCT:Total garbage collection time.

jstat -gcutil 18212 1000 10 (按百分比显式) 

jstat -compiler 18212 (显示VM实时编译的数量等信息) 
jstat –gccapacity :可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。其他的可以根据这个类推, OC是old内纯的占用量。

 jstat -gcnew 18212 (new对象数)

  

jstack

jstack 18212 (linux下特有)

jstack:可以观察到jvm中当前所有线程的运行情况和线程当前状态

jstack是非常有用的。命令格式:jstack 进程pid
              当程序出现死锁的时候,使用命令:jstack 进程ID > jstack.log,然后在jstack.log文件中,搜索关键字“BLOCKED”,定位到引起死锁的地方。

jconsole

jconsole – jconsole是基于Java Management Extensions (JMX)的实时图形化监测工具,这个工具利用了内建到JVM里面的JMX指令来提供实时的性能和资源的监控,包括了Java 程序的内存使用,Heap size, 线程的状态,类的分配状态和空间使用等等。

jmap – jmap 可以从core文件或进程中获得内存的具体匹配情况,包括Heap size, Perm size等等,目前只有在Solaris和Linux的JDK版本里面才有。

jmap (linux下特有,也是很常用的一个命令)
观察运行中的jvm物理内存的占用情况。
参数如下:
-heap
 :打印jvm heap的情况
-histo: 打印jvm heap的直方图。其输出信息包括类名,对象数量,对象占用大小。
-histo:live : 同上,但是只答应存活对象的情况
-permstat: 打印permanent generation heap情况

原文地址:https://www.cnblogs.com/binbang/p/6393553.html