文章目录
一、jps(虚拟机进程状况工具)命令汇总
格式:
jps [ options ] [ hostid ]
主要选项:
选 项 | 作 用 |
---|---|
-q | 只输出LVMID,省略主类的名称 |
-m | 输出虚拟机进程启动时传递给主类main函数的参数 |
-l | 输出主类的全名,如果进程执行的是jar包, 则输出jar路径 |
-v | 输出虚拟机进程启动时的JVM参数 |
示例:
-
jps : 输出本机正在运行的Java程序
-
jsp -v :输出虚拟机进程启动时的JVM参数
二、jstat(虚拟机统计信息监视工具)命令汇总
格式:
jstat [ option vmid [interval[s|ms] [count]] ]
主要选项:
选 项 | 作 用 |
---|---|
-class | 监视类加载、卸载数量、总空间以及类转改所耗费的时间 |
-gc | 监视Java堆状况,包括Eden区、2个Survivor区、老年代、永久代等的容量,已用空间,垃圾收集时间合计等信息 |
-gccapacity | 监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间 |
-gcutil | 监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比 |
-gccause | 与-gcutil功能一样,但是会额外输出导致上一次垃圾收集产生的原因 |
-gcnew | 监视新生代垃圾收集状况 |
-gcnewcapacity | 监视内容与-gcnew基本相同,输出主要关注使用到的最大、最小空间 |
-gcold | 监视老年代垃圾收集状况 |
-gcoldcapacity | 监视内容与-gcold基本相同, 输出主要关注使用到的最大、最小空间 |
-gcpermcapacity | 输出永久代使用到的最大、最小空间 |
-compiler | 输出即时编译器编译过的方法、耗时等信息 |
-printcompilation | 输出已经被及时编译的方法 |
示例:
- jstat -gc 3102 1000 10 : 每1000毫秒查询一次进程3102垃圾收集状况,共查询10次
- jstat -gcutil 3102 :查询各个区域的使用占比
三、jinfo(Java配置信息工具)命令汇总
格式:
jinfo [ option ] pid
主要选项:
选 项 | 作用 |
---|---|
-flag | to print the value of the named VM flag |
-flags | to print VM flags |
-flag [+|-]<name> | to enable or disable the named VM flag |
-flag <name>=<value> | to set the named VM flag to the given value |
-sysprops | to print Java system properties |
<no option> | to print both of the above |
示例:
- jinfo -flag CMSInitiatingOccupancyFraction 3102 : 查询CMSInitiatingOccupancyFraction参数值
- jinfo -sysprops 3102 :输出系统信息(部分结果)
四、jmap(Java内存映像工具)命令汇总
格式:
jmap [ option ] vmid
主要选项:
选 项 | 作 用 |
---|---|
-dump | 生成Java堆转储快照。格式为-dump:[live,]format=b,file=<filename>,其中live子参数说明是否只dump出存活的对象 |
-finalizerinfo | 显示在F-Queue中等待Finalizer线程执行finalize方法的对象。只在Linux/Solaris平台下有效 |
-heap | 显示Java堆详细信息,如使用哪种回收器、参数配置、分代状况等。只在Linux/Solaris平台下有效 |
-histo | 显示堆中对象统计信息,包括类,实例数量、合计容量 |
-permstat | 以ClassLoader为统计口径显示永久代内存状态。只在Linux/Solaris平台下有效 |
-F | 当虚拟机进程对-dump选项没有响应时,可使用这个选项强制生成dump快照。只Linux/Solaris平台下有效 |
示例:
- jmap -dump:format=b,file=test.bin 3102 : 使用jmap生成dump文件
五、jhat(虚拟机堆转储快照分析工具)命令汇总
格式:
jhat [-stack ] [-refs ] [-port ] [-baseline ] [-debug ] [-version] [-h|-help]
主要选项:
选 项 | 作 用 |
---|---|
-J<flag> | Pass <flag> directly to the runtime system. For example, -J-mx512m to use a maximum heap size of 512MB |
-stack false: | Turn off tracking object allocation call stack |
-refs false: | Turn off tracking of references to objects |
-port <port>: | Set the port for the HTTP server. Defaults to 7000 |
-exclude <file>: | Specify a file that lists data members that should be excluded from the reachableFrom query |
-baseline <file>: | Specify a baseline object dump. Objects in both heap dumps with the same ID and same class will be marked as not being “new” |
-debug <int>: | Set debug level. 0: No debug output 1: Debug hprof file parsing 2: Debug hprof file parsing, no server |
-version | Report version number |
<file> | The file to read |
示例:
- jhat test.bin : 使用jhat分析dump文件
屏幕显示“Server is ready.”的提示后,用户在浏览器中输入http://localhost:7000/可以看到分析结果,如图所示。 分析结果默认以包为单位进行分组显示,分析内存泄漏问题主要会使用到其中的“HeapHistogram”(与jmap-histo功能一样)与OQL页签的功能,前者可以找到内存中总容量最大的对象,后者是标准的对象查询语言,使用类似SQL的语法对内存中的对象进行查询统计。
六、jstack(Java堆栈跟踪工具)命令汇总
格式:
jstack [ option ] vmid
主要选项:
选 项 | 作 用 |
---|---|
-F | 当正常输出的请求不被响应时,强制输出线程堆栈 |
-l | 除堆栈外,显示关于锁的附加信息 |
-m | 如果调用到本地方法的话,可以显示C/C++的堆栈 |
示例:
- jstack -l 3500 :使用jstack查看线程堆栈(部分结果)