jdk工具一般是包装在jdk/lib/tools.jar中,主要的功能代码是在tools类库中,jdk1.5是默认关闭jmx管理功能的,jdk1.6是默认开启的
jps命令: 和linux的ps命令类似,可以列出正在运行的虚拟机进程,类似于ps -ef|grep java 不过只显示了pid 和启动的类名或者jar包,没有时间,用户(linux)等信息
jstat命令: 用于监视虚拟机各种运行状态信息的命令行工具,是在纯文本情况下去监视虚拟机状态的,不会实时显示,后来有可视化工具去查询,用的少
E--Eden已经用得空间百分比
S0和S1-- Survivor区域,有两个
O--老年代空间占比
P--永久代空间占比
YGC--Minor GC次数
FGC--Full GC次数
jinfo命令: 打印虚拟机启动时候的参数, 可以指定参数名
jinfo [option] <pid> : jinfo -flag 参数名 <pid> || jinfo <pid> 打印所有参数
jmap 和jhat:
jmap主要是看堆里面的信息 或者是 生成堆转储快照,以供分析
jhat主要是用来分析快照的,资源消耗大,不常使用
jstack命令:
生成虚拟机当前时刻线程快照 很重要
jstack -l pid 可以查看当先执行的堆栈信息 如果发现死锁会在头步显示Found one Java-level deadlock
具体到线程信息可以看到当前线程名:wating for ownable synchronizer xxxxx which is held by “线程名”;
jvm调优工具
原文:https://www.cnblogs.com/jeasGo/p/13704392.html