JDK常用命令行工具

JDK的bin目录下有很多exe文件,这些文件都是JDK自带的工具,可用于排查一些jvm的问题,本章简单介绍一些常用的JDK自带的工具的使用。

1.jvm进程查询---jps

这个工具类似于Linux系统的ps命令,可以用以查询当前虚拟机正在运行的进程相关信息。这个命令是一个十分基础的命令,因为它可以查询进程的唯一ID(LVMID),其他的命令都会依赖这个LVMID来进行其他的信息检索,jps命令常用参数如下表所示:

选项参数说明
-q只输出LVMID,其他信息不显示
-m输出虚拟机进程启动时传递给main函数的参数
-l输出进程主类的全限定名,如果执行的是jar包,则显示jar的全路径
-v输出虚拟机进程启动时的jvm参数信息

2.jvm统计信息监视工具---jstat

这个命令是用于监控虚拟机各种运行状态的工具,他可以查询本地或者远程虚拟机进程中的类装载,内存,垃圾回收等运行数据,这个命令的的格式如下:

jstat [option vmid [interval [s|ms] [count]]]

例如执行jstat -gc 13416 200 10,它就表示查询13416这个进程的垃圾回收相关信息,每间隔200毫秒查询一次,共循环10次,执行结果如下图

这个命令常用的参数如下表所示,还有很多其他的参数,需要大家在自行查找相关文档琢磨。

选项参数说明
-class监视类装载,卸载数量,总空间以及类装载所耗的时间
-gc监视java堆状况进行监视,包括Eden区域,两个survivor区,老年代,永久代等相关信息
-gccause输出上一次导致gc的原因

3.堆栈追踪工具---jstack

这个命令用于生成此时此刻线程快照,生成线程快照的主要作用就是定位当前线程出现长时间停顿的问题,如线程死锁,死循环,请求外部资源实践过长等情况。这个时候就可以使用jstack命令来分析这段代码了。如我们写如下一个程序

public class TastTask {

    public static void main(String[] args) {
        while (true) {
            System.out.println("死循环");
        }
    }

}

这是一个死循环程序,模拟一下某个线程的耗时操作,通过jstack命令可以查看呗阻塞的线程相关的信息,如下图,限制性jps命令,然后获取到LVMID,通过jstack命令就能很快的定位到程序被卡住的位置:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值