深入理解Java虚拟机 Chapter04#
JDK的命令行工具#
| 名称 | 主要作用 |
|---|---|
| jps | JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程 |
| jstat | JVM Statistics Monitoring Tool,用于收集HotSpot虚拟机各方面的运行数据 |
| jinfo | Configuration Info for Java,显示虚拟机配置信息 |
| jmap | Memory Map for Java,生成虚拟机的内存转储快照(heapdump文件) |
| jhat | JVM Heap Dump Browser,用于分析heapdump文件,它会建立一个HTTP/HTML服务器,让用户可以在浏览器上查看分析结果 |
| jstack | Stack Trace for Java,显示虚拟机的线程快照 |
jps#
jps:虚拟机进程状况工具
jps [options] [hostid]
| 选项 | 作用 |
|---|---|
| -q | 只输出LVMID,省略主类的名称 |
| -m | 输出虚拟机进程启动时传递给main()函数的参数 |
| -l | 输出主类的全名,如果进程执行的是Jar包,输出Jar路径 |
| -v | 输出虚拟机进程启动时的JVM参数 |
jstat#
jstat:虚拟机统计信息监视工具
jstat [options vmid [interval[s|ms]] [count] ]
| 选项 | 作用 |
|---|---|
| -class | 监视类装载,卸载数量,总空间以及类装载所耗费的时间 |
| -gc | 监视Java堆状况,包括Eden区、2个survivor区、老年代、永久代等的容量、已用空间、GC时间合计等信息 |
| -gccapacity | 监视内容与-gc基本相同,但输出主要关注Java堆各个区域的最大和最小空间 |
| -gcutil | 监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比 |
| -gccause | 与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因 |
| -gcnew | 监视新生代GC情况 |
| -gcnewcapacity | 监视内容与-gcnew基本相同,但输出主要关注使用到的最大和最小空间 |
| -gcold | 监视老年代GC情况 |
| -gcoldcapacity | 监视内容与-gcold基本相同,但输出主要关注使用到的最大和最小空间 |
| -gcpermcapacity | 输出永久代使用到的最大和最小空间 |
| -complier | 输出JIT 编译器编译过的方法、耗时的信息 |
| -printcompilation | 输出已经被JIT编译的方法 |
jinfo#
jinfo:Java配置信息工具
jinfo [option] pid
jmap#
jmap:Java内存映像工具
jmap [option] vmid
| 选项 | 作用 |
|---|---|
| -dump | 生成堆转储快照,格式为:-dump:[live,]format=b,file=<filename>,其中live子参数说明是否只dump出存活的对象 |
| -finalizerinfo | 显示在F-Queue队列等待Finalizer线程执行finalizer方法的对象 |
| -heap | 显示Java堆详细信息,如使用哪种回收器,参数配置,分代状况等 |
| -histo | 显示堆中对象的统计信息,GC使用的算法,heap的配置及wise heap的使用情况,可以用此来判断内存目前的使用情况以及垃圾回收情况 |
| -permstat | 已ClassLoader为统计口径显示永久代内存状态 |
| -F | 当-dump没有响应时,强制生成dump快照 |
jhat#
jhat:虚拟机堆转储快照分析工具
jhat [option] [dumpfile]
jstack#
jstack:Java堆栈跟踪工具
jstack [option] vmid
| 选项 | 作用 |
|---|---|
| -F | 当正常输出请求不被响应时,强制输出线程堆栈 |
| -l | 除堆栈外,显示关于锁的附加信息 |
| -m | 如果调用到本地方法的话,可以显示C/C++的堆栈 |