JDK命令行工具
1.JPS--虚拟机进程状况工具:JVM process Status Tool,功能和linux的ps类似,可以列出正在运行的虚拟机进程,并显示虚拟机执行主类名称(Main Class,main()函数所在类的名称)以及这些进程的 本地虚拟唯一ID(Local Virtual Machine Idetifier)。
命令格式:jps [options][hostid]
常见的options:-q 只输出LVMID,省略主类名称
-m:输出虚拟机进程启动时传递给主类main()函数的参数
-l:输出主类的全名,如果进程执行的是jar包,输出jar路径
-v:输出虚拟机进程启动时JVM参数
2.jstat--虚拟机统计信息监视工具:JVM Statistics Monitoring Tool,是用于监视虚拟机各种运行状态信息的命令行工具,他可以显示本地或者远程虚拟机进程中的类加载、内存、垃圾收集、JIT编译等运行数据。
命令格式:jstat -<option>[-t][-h<lines>]<vmid>[<interval>[<count>]],其中只有<>是必须的,[]是可选的
option:option指令有:class,complier,gc,gccapacity,gccause,gcmetacapicty,gcnew,gcnewcapacity,gcold,gcoldcapacity,gcutil,printcompilation
vmid:虚拟机id,可以使用jps -l查看。如果是远程虚拟机,则另说;
例如:jstat -gc 3257
例如查询进程2764的垃圾收集情况,每250ms查询一次,一共查询20次,为
jstat -gc 2764 250 20
例如使用jstat -gcutil 2764
输出的内容你可能看不懂,下面说一下详细情况:E表示Eden区,S01,S02表示两个Survivor区,O表示老年代,P表示永久代,YGC表示young GC,也就是Minor GC的次数,后面跟着的是消耗的秒数,FGC表示Full GC的次数和时间,GCT表示所有GC总的消耗时间
3.jinfo--java配置信息工具:Configuration info for java,实时的查看和调整虚拟机各项参数。
命令格式:jinfo [option] pid
比如jinfo -flags 2764 打印2764的虚拟机参数信息。
也可以jinfo -flag <name> pid,查看pid进程的name参数的信息
4.Jmap--java内存映像工具:Memory Map for Java,用于生成堆转储快照。可以生成一个dump文件查看堆的状态。也可以使用-XX:+HeapDumpOnOutOfMemoryError在虚拟机抛出OOM异常时自动生成dump文件。
命令格式:jmap [option] vmid
option选项
5.jhat--虚拟机对转储快照分析工具:可以和jmap搭配使用,来分析jmap生成的对转储快照。jhat内置了一个微型的Http/html服务器,生成dump文件的分析结果后,可以再浏览器中查看。
6.jstack--java堆栈跟踪工具:Stack Tradce for Java,用于生成虚拟机当前时刻线程快照。
命令格式:jstack [option] vmid
主要的optioni:-F 当正常输出请求不响应时,强制输出线程堆栈;
-l 除堆栈外,显示关于锁的附加信息;
-m 如果调用本地方法的话,可以显示C/C++堆栈。
7.HSDIS--JIT生成代码反汇编:一个Sun官方推荐的HotSpot虚拟机JIT编译代码的反汇编插件。
JDK可视化工具
在jdk的bin文件下,JConsole.exe和JVisualVM工具,JConsole是jdk6之前就提供了的,JVisualVM是之后提供的,所以推荐有visualVM,更加强大