java自带命令,Java中JDK自带分析命令介绍

目前我们所接触到的Java类系统还是占了绝大部分的,所以针对于JAVA类系统的监控分析是我们需要掌握的。目前Java类系统分监控分析手段有开源工具类、商用产品类、自带命令,其中最常用的有jvisualvm、jconsole、glowroot、arthas、jprofiler等。其实这些工具不管是开源和商用的都是通过执行底层命令获取监控数据进行整理展示的,所以我们今天就来聊一聊命令监控分析,也就是Sun JDK自带的命令。

以下命令都是在java安装的bin目录下例如/usr/jdk1.8/bin

1、jcmd

他是一个多功能的工具,可以用它来导出堆、查看Java进程、导出线程信息、执行GC、还可以进行采样分析(jmc 工具的飞行记录器)

1)查看当前机器的JVM进程信息 jcmd -l

30714281a56c269be21f8a7e750fe03c.png

2)查看指定进程的性能信息 jcmd pid PerfCounter.print

2728437a09d7ca1a7611ff210f5a4c84.png

3)列出当前JAVA进程可执行的操作 jcmd pid help

04f3cff740d7f2fdd544b812398767d2.png

2、jps

是java提供的一个显示当前所有java进程pid的命令 jps

ba547b1065ff6d8dcd1dc99c6632b96f.png

3、jstat

主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控

详细监控GC回收命令为jstat -gcutil pid 1s

7eb510c71d6f60421222f0fccdbb3397.png

详细解释如下:S0:第一个幸存区的使用大小

S1:第二个幸存区的使用大小

E:伊甸园区的使用大小

O:老年代使用大小

M:方法区使用大小

CCS:压缩类空间使用大小

YGC:年轻代垃圾回收次数

YGCT:年轻代垃圾回收消耗时间

FGC:老年代垃圾回收次数

FGCT:老年代垃圾回收消耗时间

GCT:垃圾回收消耗总时间

4、jstack

jstack主要是用来查看某个java进程内的线程堆栈信息

1)详细查看java进程线程状态和消耗堆栈信息:jstack -l pid

e2b7c9b06b6cb0ceabf9b88d94e0f15e.png

2)针对线程信息的转储文件,我们可以直接打开查看也可以通过格式化工具进行查看,通过jca433.jar查看具体命令java -jar jca433.jar

736763f88d694125eeaed77407efbf9f.png

5、jmap

jmap命令是一个可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)

通俗理解就是当我们的java程序出现OOM的时候通过jmap可以生成对应的内存heapdump文件,通过heapdump文件分析内存泄露的泄露源。

jmap -dump:live,format=b,file=dump.txt pid

38cc436768b907873cae004dd8b374ea.png

6、jhat

主要是用来分析java堆的命令,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言。所以jhat主要是跟jmap组合使用,但让也可以离线分析heapdump文件。

1)jhat -J -Xmx4096m xxx.dmp (由于产生的heapdump文件较大,所以往往需要制定堆大小才能打开)

b58ea8351ba4e9fb8eb0bab59db3ed5c.png

jhat是一个server/client模式的,server负责分析dump文件,client展示。主要如下:

http://ip:7000/

8a77d6d53cb9bdcb714f3860f30cacc4.png

对于jhat启动后显示的html页面中功能:

(1)显示出堆中所包含的所有的类

407119b2a8d0cdbbe6eb5e98044739d5.png

(2)从根集能引用到的对象

7fe78d5db0cd73003dfba2679f769e04.png

(3)显示平台包括的所有类的实例数量

6e7da1b181fab55826c9064f246c4768.png

(4)堆实例的分布表

e826ad3dd7f69fc5789133202cf5a83c.png

(5)执行对象查询语句

6ee0159a793c9a0f3d25b6953ba45e93.png

输入内容如:

#查询长度大于100的字符串

select s from java.lang.String s where s.count > 100

详细的OQL可点击上图的“OQL help”

2)对于heapdump的分析除了使用jhat之外,还可以使用IBM HeapAnalyzer

java -Xms1024m -Xmx4096m -jar ha456.jar

443e1e1bac8cc3ca8f975095a121a9fa.png

7、jinfo

可以用来查看正在运行的 java 应用程序的扩展参数,包括Java System属性和JVM命令行参数;也可以动态的修改正在运行的 JVM 一些参数。当系统崩溃时,jinfo可以从core文件里面知道崩溃的Java应用程序的配置信息

jinfo pid

00ffa4e1b1bb2e695f3b0465e236576c.png

8、jvisualvm

jdk自带的成型的监控分析工具,可以监控JVM运行时的JVM参数、系统参数、堆栈、线程、CPU使用等信息。可分析本地应用及远程应用

bbe96a2b0597a95f9493a6381147ff9b.png

9、jconsole

JConsole 也是JDK自带的一款成型监控工具,基本包括以下基本功能:概述、内存、线程、类、VM概要、MBean等。

b8b072d7d4b0b85041d074d0800d08b6.png

备注:

1、以上命令除了jvisualvm和jconsole工具外,其他命令都只在Sun Jdk下支持。

2、以上文章介绍的命令只列出了常用部分,其他扩展部分可以使用-help查看使用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值