二、JAVA性能调优之jdk命令工具

一、linux性能收集和统计工具
二、JAVA性能调优之jdk命令工具

二、JDK性能收集和统计工具

jdk在性能遇到问题时,常用的查看分析命令有

  • jps:类似linux中的ps;
  • jstat:通过这个命令,可以查看堆信息的详细情况;
  • jinfo:可统计CPU内存使用情况、swap使用情况等信息;
  • jmap:导出堆快照信息进行分析;
  • jstack:导出java程序的线程堆栈;

下面分别介绍这几个命令参数的

1、jps命令

使用jps [-help]得到下面的参数

  • -q 只输出进程ID,而不输出类的短名称
  • -m 用于输出传递给Java进程(主函数)的参数
  • -l 用于输出主函数的完整路径
  • -v 可以显示传递给JVM的参数

2、jstat命令

基本语法:jstat <option> [-t] [-h] <vmid> [<interval>[<count>]]

option参数参数说明
-class显示ClassLoader的相关信息
-compiler显示JIT编译的相关信息
-GC显示与GC相关的堆信息
-gccapacity显示各个代的容量及使用情况
-gccause显示垃圾收集相关信息(同-gcutil)显示最后一次或当前正在发生的垃圾收集的原因
-gcnewcapacity显示新生代大小与使用情况
-gcold显示老年代和永久代的信息
-gcoldcapacity显示老年代的大小
-gcpermcapacity显示永久代的大小
-gcuti显示垃圾收集信息
-printcompilation输出JIT编译的方法信息
-gcnew显示新生代信息

-t 参数可以在输出信息前加上一个Timestamp列,显示程序的运行时间。

-h 参数可以在周期性数据输出时,输出多少行数据后,跟着输出一个表头信息。

interval 参数用于指定输出统计数据的周期,单位为毫秒

count用于指定一共输出多少次数据。

查看GC输出 jstat -gc 10620 1000 3

在这里插入图片描述

这里的参数说明将会包含option命令中大大部分参数

参数含义
S0Cs0(from)的大小(KB)
S1Cs1(from)的大小(KB)
S0Us0(from)已使用的空间(KB)
S1Us1(from)已使用的空间(KB)
ECeden区的大小(KB)
EUeden区的使用空间(KB)
OC老年代大小(KB)
OU老年代已经使用的空间
PC永久区大小(KB)
PU永久区使用空间(KB)
YGC新生代GC次数
YGCT新生代GC耗时
FGCFullGC次数
FGCTFullGC耗时
GCTGC总耗时
NGCMN新生代最小值(KB)
NGCMX新生代最大值(KB)
NGC当前新生代大小(KB)
OGCMN老年代最小值(KB)
OGCMX老年代最大值(KB)
PGCMN永久代最小值(KB)
PGCMX永久代最大值(KB)
LGOO上次GC的原因
GCC当前GC原因
TT新生代对象晋升到老年代对象的年龄
MTT新生代对象晋升到老年代对象的年龄最大值
DSS所需的survivor区大小
SOCMXs区的最大值(KB)
S1CMXs1区的最大值(KB)
ECMXeden区的最大值(KB)
S0S0区使用的百分比
S1S1区使用的百分比
Eeden区使用的百分比
OOld区使用的百分比
P永久区使用的百分比

3、jinfo命令

jinfo可以用来查看正在运行的Java应用程序的扩展参数,甚至支持在运行时修改部分参数。

基本语法为:jinfo

[root@localhost javademo]# jinfo -flag MaxTenuringThreshold 10620
-XX:MaxTenuringThreshold=15

修改这个参数为显示输出

[root@localhost javademo]# jinfo -flag +PrintGCDetails 10620

4、jmap命令

[root@localhost javademo]# jmap -dump:format=b,file=/opt/heap.hprof 10620
Dumping heap to /opt/heap.hprof ...
Heap dump file created

使用visualVM打开文件,进行分析即可

在这里插入图片描述

5、jstack命令

这里不再详说,在linux章节有简单介绍

jstack -l 71982>/opt/71982.txt**,可以看到是哪段代码出的问题。

“Thread-0” #8 prio=5 os_prio=0 tid=0x00007f77e0152800 nid=0x11a6a runnable [0x00007f77cb0c7000]
java.lang.Thread.State: RUNNABLE
at com.toto.cpu.CpuUseDemo$CpuUseMax.run(CpuUseDemo.java:15)
at java.lang.Thread.run(Thread.java:750)

三、可视化分析工具

1、JConsole

JConsole工具是JDK自带的图形化性能监控工具。通过JConsole工具,可以查看Java 应用程序的运行概况,监控堆信息、永久区使用情况、类加载情况等。本节主要介绍JConsole 工具的基本使用方法。

2、Visual VM

VisualVM是一个功能强大的多合一故障诊断和性能监控的可视化工具,它集成了多种性能统计工具的功能,使用VisualVM可以代替jstat、jmap、jhat、jstack甚至是JConsole。VisualVM便作为JDK的一部分发布,它完全免费。ViusalVM也可以作为独立的软件安装,可以在http://visualvm.java.net下载并安装VisualVM的最新版本

3、MAT

MAT是MemoryAnalyzer的简称,它是一款功能强大的Java堆内存分析器,可以用于查找内存泄露以及查看内存消耗情况。MAT是基于Eclipse开发的,是一款免费的性能分析工具。读者可以在http://www.eclipse.org/mat/下载并使用MAT

4、Jprofile

收费的
Analyzer的简称,它是一款功能强大的Java堆内存分析器,可以用于查找内存泄露以及查看内存消耗情况。MAT是基于Eclipse开发的,是一款免费的性能分析工具。读者可以在http://www.eclipse.org/mat/下载并使用MAT

4、Jprofile

收费的

  • 27
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Grain322

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值