类似Linux的ps,但jps只列出Java的进程。可方便查看Java进程的启动类、传入参数和JVM参数。直接运行,不加参数,列出Java程序的进程ID及Main函数名称。
观察Java应用程序运行时信息的工具,详细查看堆使用情况以及GC情况
显示加载class的数量及所占空间等信息
显示gc信息,查看gc的次数及时间
➜ ~ jstat -gc 87552
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT CGC CGCT GCT
25088.0 20992.0 0.0 20992.0 500224.0 56227.0 363008.0 35238.1 76672.0 72902.5 10368.0 9590.5 9 0.078 3 0.162 - - 0.239
比-gc多了各个代的最大值和最小值
最近一次GC统计和原因
相比于-gc 参数,只显示使用率而非使用量了。 显示GC回收相关信息
当前VM执行的信息
jinfo
查看正在运行的Java程序的扩展参数,甚至在运行时修改部分参数
jinfo -flag MaxTenuringThreshold 31518
-XX:MaxTenuringThreshold=15
> jinfo -flag PrintGCDetails 31518
-XX:-PrintGCDetails
> jinfo -flag +PrintGCDetails 31518
> jinfo -flag PrintGCDetails 31518
-XX:+PrintGCDetails
生成堆快照和对象的统计信息。
-histo 打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量.
获得堆快照文件之后,我们可以使用多种工具对文件进行分析,例如jhat,visual vm等。
分析Java应用程序的堆快照文件,以前面生成的为例
jhat在分析完成之后,使用HTTP服务器展示其分析结果,在浏览器中访问http://127.0.0.1:7000/即可得到分析结果。
导出Java应用程序的线程堆栈
jstack -l
jstack可以检测死锁,下例通过一个简单例子演示jstack检测死锁的功能。java代码如下:
从该输出信息可知:
执行 JVM 相关分析命令(整合命令)。
JFR.stop
JFR.start
JFR.dump
JFR.check
VM.native_memory
VM.check_commercial_features
VM.unlock_commercial_features
ManagementAgent.stop
ManagementAgent.start_local
ManagementAgent.start
VM.classloader_stats
GC.rotate_log
Thread.print
GC.class_stats
GC.class_histogram
GC.heap_dump
GC.finalizer_info
GC.heap_info
GC.run_finalization
GC.run
VM.uptime
VM.dynlibs
VM.flags
VM.system_properties
VM.command_line
VM.version
help
执行 js 命令