jdk内置工具整理

一.jps
1.1 用途
用来显示所有具有访问权限的Java进程的具体状态。
1.2 用法
jps [options] [hostid]
options:
-q 只显示进程id
-m 同时显示进程id、主类名或jar名、传递给main方法的参数
-l 同时显示进程id、主类的完整包路径或jar的完整路径
-V 同时显示进程id、主类名或jar名、通过标记文件传递给jvm的参数
-v 同时显示进程id、主类名或jar名、传递给jvm的参数
二、jstack
2.1 用途
用来显示给定的java进程、core file或远程调试服务的java堆栈信息。
2.2 用法
jstack [option]..[option] <pid>
jstack [option]..[option] executable core
jstack [option]..[option] [serverid@]remote hostname or ip
option:
-F 如果-l没有响应时,强制打印栈信息
-l 打印关于锁的附加信息
-m 打印java和native C/C++所有的栈信息
2.3 thread dump文件中的值得关注的状态
2.3.1 deadlock 死锁
2.3.2 ruanable 执行中
2.3.3 waiting on condition 等待资源
2.3.4 waition on monitor entry 等待获取监视器
2.3.5 suspend 暂停
2.3.6 Object.wait或TIME_WAITING 对象等待中
2.3.7 blocked 阻塞
2.3.8 parked 停止
三、jstat
3.1 用途
查看java堆的使用情况。
3.2 用法
jstat -help|-options
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
option:
-class 对于类的加载情况的统计
-compiler 查看即时编译器编译情况统计
-gc 查看jvm堆中垃圾收集情况统计
-gccapacity 堆的新生代、老生代及持久代的存储容量情况统计
-gccause 用于查看垃圾收集情况,还可以显示最后一次垃圾收集及原因
-gcnew 用于查看新生代垃圾收集情况
-gcnewcapacity 用于查看新生代存储容量情况
-gcold 用于查看老生代及持久代垃圾收集情况
-gcoldcapacity 用于查看老生代存储容量情况
-gcpermcapacity 用于查看持久代存储容量情况
-gcutil 用于查看新生代、老生代、持久代的垃圾收集情况
-printcompilation hotspot编译方法的统计

-t
用来在开始的地方显示jvm从启动到当前的时间的时间戳
-h<lines>
用于指定每隔lines行就出现列头
vmid
java进程id
interval
用来指定每隔interval时间统计一次,可以带s或ms单位
count
用来指定统计多少次
3.3 输出结果
S0C:年轻代中第一个survivor(幸存区)的容量 (字节)
S1C:年轻代中第二个survivor(幸存区)的容量 (字节)
S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
EC:年轻代中Eden(伊甸园)的容量 (字节)
EU:年轻代中Eden(伊甸园)目前已使用空间 (字节)
OC:Old代的容量 (字节)
OU:Old代目前已使用空间 (字节)
PC:Perm(持久代)的容量 (字节)
PU:Perm(持久代)目前已使用空间 (字节)
YGC:从应用程序启动到采样时年轻代中gc次数
YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
FGC:从应用程序启动到采样时old代(全gc)gc次数
FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)
NGCMN:年轻代(young)中初始化(最小)的大小 (字节)
NGCMX:年轻代(young)的最大容量 (字节)
NGC:年轻代(young)中当前的容量 (字节)
OGCMN:old代中初始化(最小)的大小 (字节)
OGCMX:old代的最大容量 (字节)
OGC:old代当前新生成的容量 (字节)
PGCMN:perm代中初始化(最小)的大小 (字节)
PGCMX:perm代的最大容量 (字节)
PGC:perm代当前新生成的容量 (字节)
S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
E:年轻代中Eden(伊甸园)已使用的占当前容量百分比
O:old代已使用的占当前容量百分比
P:perm代已使用的占当前容量百分比
S0CMX:年轻代中第一个survivor(幸存区)的最大容量 (字节)
S1CMX :年轻代中第二个survivor(幸存区)的最大容量 (字节)
ECMX:年轻代中Eden(伊甸园)的最大容量 (字节)
DSS:当前需要survivor(幸存区)的容量 (字节)(Eden区已满)
TT: 持有次数限制
MTT : 最大持有次数限制
四、jmap
4.1 用途
展示java内存内的所有对象情况
4.2 用法
jmap [option] <pid>
jmap [option] <executable <core>
jmap [option] [server_id@]<remote server IP or hostname>
option:
<none>               打印一些简单的信息
-heap                打印java堆内存摘要信息
-histo[:live]        展示java对象堆内存对象的直方图,如果live选项指定则只展示活着的对象
-permstat            打印持久代的统计信息
-finalizerinfo       打印正在等待回收的对象的信息
-dump:<dump-options> 以二进制的形式打印堆内对象dump信息到文件
dump-options:选项之间使用","分割
   live         可选项,只打印活着的对象信息
   format=b     二进制格式
   file=<file>  文件
Example: jmap -dump:live,format=b,file=heap.bin <pid>
-F                   强迫在pid没有响应的时候使用-dump或者-histo参数. 在这个模式下,live子参数无效
-J<flag>             传递参数给jvm
五、jinfo
5.1 用途
打印出java进程的jvm参数和系统参数。也可以更改参数
5.2 用法
jinfo [option] <pid>
jinfo [option] <executable <core>
jinfo [option] [server_id@]<remote server IP or hostname>
option:
-flag <name>         打印指定名为name的jvm参数
-flag [+|-]<name>    启用或禁用名为name的jvm参数
-flag <name>=<value> 设置名为name的jvm参数值
-flags               打印jvm参数
-sysprops            打印系统参数
<no option>          打印jvm及系统参数
六、jconsole
jdk提供的一款java GUI工具,可以监控本地及远程vm,以图表形式展示内存、线程使用信息、类的调用信息、vm信息及所有MBeans信息。
七、jvisualvm
也是jdk提供的一种类似jconsole的监控本地及远程jvm的GUI工具。
八、jhat
用来分析java堆dump file的命令,可以以html的方式展示对象。
九、jdb
对java程序进行debug调试
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值