美文网首页壁纸小家JAVA技术干货
Java性能调优工具之JDK命令行

Java性能调优工具之JDK命令行

作者: 紫霞等了至尊宝五百年 | 来源:发表于2018-03-13 09:53 被阅读316次

1.1 jps

类似Linux的ps,但是jps只用于列出Java的进程
可以方便查看Java进程的启动类,传入参数和JVM参数等
直接运行,不加参数,列出Java程序的进程ID以及Main函数等名称


jps命令本质也是Java程序
-m 输出传递给Java进程的参数
-l 输出主函数的完整路径
-q 只输出进程ID
-v 显示传递给jvm的参数

1.2 jstat

用于观察Java应用程序运行时信息的工具,详细查看堆使用情况以及GC情况


image.png

jstat -class pid:显示加载class的数量,及所占空间等信息。

-compiler -t:显示JIT编译的信息
-gc pid:可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。
-gccapacity比-gc多了各个代的最大值和最小值

-gccause 4768 最近一次GC统计和原因
LGCC:上次GC原因
GCC:当前GC原因
-gcnew pid:new对象的信息。

jstat -gcnewcapacity pid:new对象的信息及其占用量。


-gcold 显示老年代和永久代信息

-gcoldcapacity展现老年代的容量信息
image.png
-gcutil显示GC回收相关信息

jstat -printcompilation pid:当前VM执行的信息。

还可以同时加两个数


输出进程4798的ClassLoader信息,每1秒统计一次,共输出2次

1.3 jinfo

查看正在运行的Java应用程序的扩展参数,甚至在运行时修改部分参数
jinfo <option> <pid>

jinfo可以查看运行时参数:

jinfo -flag MaxTenuringThreshold 31518
-XX:MaxTenuringThreshold=15

jinfo还可以在运行时修改参数值:

> jinfo -flag PrintGCDetails 31518
-XX:-PrintGCDetails

> jinfo -flag +PrintGCDetails 31518

> jinfo -flag PrintGCDetails 31518

-XX:+PrintGCDetails

1.4 jmap

生成堆快照和对象的统计信息


-histo 打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量. -dump:[live,]format=b,file=<filename> 使用hprof二进制形式,输出jvm的heap内容到文件=. live子选项是可选的,假如指定live选项,那么只输出活的对象到文件.

获得堆快照文件之后,我们可以使用多种工具对文件进行分析,例如jhat,visual vm等。

1.5 jhat

分析Java应用程序的堆快照文件,以前面生成的为例

jhat heap.hprof
jhat在分析完成之后,使用HTTP服务器展示其分析结果,在浏览器中访问http://127.0.0.1:7000/即可得到分析结果。

1.6b jstack

导出Java应用程序的线程堆栈
jstack -l <pid>

jstack可以检测死锁,下例通过一个简单例子演示jstack检测死锁的功能。java代码如下:



使用jps命令查看进程号为11468,然后使用jstack -l 11468 > a.txt命令把堆栈信息打印到文件中

从这个输出可以知道:
1、在输出的最后一段,有明确的"Found one Java-level deadlock"输出,所以通过jstack命令我们可以检测死锁
2、输出中包含了所有线程,除了我们的north,sorth线程外,还有"Attach Listener", "C2 CompilerThread0", "C2 CompilerThread1"等等;
3、每个线程下面都会输出当前状态,以及这个线程当前持有锁以及等待锁,当持有与等待造成循环等待时,将导致死锁

相关文章

  • jvm监控与调优之jdk命令行工具

    jvm监控与调优之jdk命令行工具 目录 jvm监控与调优之jdk命令行工具jvm的参数类型标准参数X参数XX参数...

  • JVM性能调优实战(〇) - 简介

    收获 计划安排 基于JDK命令行工具的监控 基于Btrace的监控调试 Tomcat性能监控与调优 Nginx性能...

  • 3.JVM调优工具

    JVM调优工具 1、JVM调优工具-JDK工具 1.1 jps jps:Java Virtual Machine ...

  • Java性能调优工具之JDK命令行

    1.1 jps 类似Linux的ps,但是jps只用于列出Java的进程可以方便查看Java进程的启动类,传入参数...

  • 服务器JVM等查看

    常用 JVM性能调优监控工具JDK内置工具使用JAVA线程dump分析JVM致命错误日志1 . CPU的监控 cs...

  • Java虚拟机工具(应用)

    一.Java虚拟机工具 JDK 本身提供了很多方便的 JVM 性能调优监控工具,除了 jps、jstat、jinf...

  • Java调优工具介绍

    Java监控工具 jcmd : jvm 性能调优工具之 jcmd示例: jconsole:图形化监控工具示例:在命...

  • Java性能调优

    概览 设计优化 Java程序优化 Java程序优化并行程序开发及优化 JVM调优 Java性能调优工具

  • JDK自带的性能调优监测工具使用示例

    JVM性能调优监控工具jps、jstack、jmap、jhat、jstat位于JDK的bin目录,这些工具短小精悍...

  • iOS 性能调试

    一、简介 性能调优的方式可以分为: 通过专门的性能调优工具; 通过代码优化; 二、内容 1、性能调优工具介绍 1....

网友评论

  • 半夏风痕:使用-Xms和-Xmx来指定JVM堆空间的初始值和最大值都为6144M,JAVA进程起来后,用top命令查看内存,该进程实际上只占用了2.9多个G的内存。但跑一段时间的业务,内存占用增加了5个多G。请问楼主,这个初始值为什么没生效?这种现象是出现内存泄露了吗?

本文标题:Java性能调优工具之JDK命令行

本文链接:https://www.haomeiwen.com/subject/wyvafftx.html