Java命令行工具简介

Java profiling虽然已经有了youkit、jprofile等工具,但是这些工具一般不会在生产环境使用,线上遇到问题,最简单直接的还是使用jdk自带的命令行工具进行问题定位。另外,对于线上的监控,可以写个一个定时脚本,不断执行相关命令,将结果发送到opentsdb,做监控(当然,你也可以在生产环境起jstatd服务)。


下面简单介绍几个命令

1,jps

这个命令是最基础的命令了,它的作用和ps -ef | grep java相当,是进行问题排查的入口。但是针对java进程,可能比ps更好用(这一点我不是很确定,没有深入看过ps命令)。其使用方式如下
jps -l


在我个人的centos虚拟机上,执行结果如下


前面数字是pid,后面是主类的全名
jps可以不带参数使用,可支持的参数如下

选项作用
-q 
-m输出进程启动时传递给main的参数,比如jps -m中的-m
-l输出进程主类全名称,比如sun.tools.jps.Jps
-v输出进程启动时的JVM参数,比如-Xms8m


2,jstat
可以查看java进程的类加载、gc等信息

查看GC情况可以使用jstat -gc 3731 1000 20,其通用模式是 jstat [option] [pid] [timeinterval] [times]

上面的命令表示查看pid为3731的进程gc情况,1000为时间间隔,单位毫秒,20是次数

在我个人的centosx虚拟机上,执行结果如下

其中S0C, S1C,表示新生代两个Survivor区的容量,EC表示Eden区容量,OC表示老年代容量,MC(我的jdk版本为1.8,1.8一起为PC)表示持久代容量。

jstat另外支持其他一些参数,分别实现不同功能。

 

3,jstack

这个命令可以生成线程快照,同样是在我本人的centos虚机上执行命令,得到的结果如下

 

 

如此,通过上面三个简单的命令,已经可以达到查看GC和线程状态的目的。最后补充一句,性能优化和问题排查是个很系统化的工作,做好监控和告警,是定位问题最有效的手段。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值