深入理解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++的堆栈 |