Java常用分析工具Jps、Jstat、Jinfo、Jstack以及Jconsole的简单介绍和使用

JVM参数查看 java -XX:+PrintFlagsFinal和java -XX:+PrintCommandLineFlags

1. JVM Process Status(Jps)

可以列出正在运行的虚拟机进程,并得到进程的本地虚拟机唯一ID(Local Virtual Machine Identifier, LVMID),可被其它Java工具使用。

1.1 未启用其它Java程序

1.2 启动IDEA,但未运行Java程序

1.3 在IDEA中运行TestGeneric类程序

2. JVM Statistics Monitoring Tool(Jstat)

用于监视虚拟机各种状态信息,包括类装载、垃圾回收等数据。可通过jstat -options查看有哪些选项信息输出。

2.1 类装载信息

2.2 垃圾回收相关信息(以KB为单位)

S0表示第一个Survivor区,S1表示第二个;S0C表示第一个Survivor区的容量,S0U表示第一个Survivor区的使用量。EC表示Eden区的容量,EU表示Eden区的使用量。OC表示老年代的容量,OU表示老年代区使用量。YGC表示新生代回收次数,YGCT表示新生代回收时间;FGC表示老年代回收次数,FGCT表示老年代回收时间。GCT是总的垃圾回收时间。CGC是什么垃圾回收?

3. Configuration Info for Java(Jinfo)

查看和调整虚拟机参数,只能查看和修改一部分可改的虚拟机参数,操作选项如下。

3.1 查看虚拟机参数

3.2 查看特定虚拟机参数

3.3 修改特定虚拟机参数

4. Stack Trace for Java(Jstack)

根据线程的堆栈信息分析线程异常情况。

5. 总结

Jps:虚拟机进程状态工具,查看Java程序的信息,主要是得到进程ID

Jstat:虚拟机数据监视工具,查看Java程序的类装载和垃圾回收等数据,内存监控

Jinfo:虚拟机配置信息工具,查看和修改部分可改的虚拟机参数。

Jstack:Java堆栈跟踪工具,根据线程堆栈信息分析线程状况。主要用于线程监控

JConsole:上述工具的结合体,并且有图像界面。

6. JVM调优

6.1 栈大小的参数是 -Xss,默认是1M

6.2 堆初始大小的参数是 -Xms,默认是1/64内存大小;堆内存最大的参数是 -Xmx,默认是1/4内存大小。

6.3 -XX:NewRatio是初始老年代和新生代的比值,默认是2。

6.4 虚拟机调优:1.代码层面:①尽量少用临时对象;②可以使用基本类型就不要使用包装类;③对象不使用时,显式地设为null。2.JVM参数层面:①合适的堆内存初始值;②合适的堆内存大小;③老年代对象的判定;④分配担保。


版权声明:本文为yldmkx原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。