关于java:JDK8-几个常见内置命令工具

5次阅读

共计 1766 个字符,预计需要花费 5 分钟才能阅读完成。

javap
javap [options] classfile…

javap 命令反汇编一个或多个类文件。输入取决于所应用的选项。如果不应用任何选项,则 javap 命令将打印程序包,受爱护的字段和公共字段以及传递给它的类的办法。javap 命令将其输入打印到 stdout

jps
JVM Process Status Tool – Lists instrumented HotSpot Java virtual machines on a target system.

JVM 过程状态工具 - 列出指标零碎上已检测到的 HotSpot Java 虚拟机

jstat

监督 Java 虚拟机(JVM)统计信息,次要是 GC 信息,在性能优化中常常用到。此命令是实验性的不受反对。

通过 jps 查到的过程号 31007,咱们应用 jstat -gc 31007 来查看该过程的 GC 信息

每个对象都有一个指向它本身类的指针,_klass: 指向类的 4 字节指针,64 位平台上 _klass: 指向类的 8 字节的指针,为了节约这些空间,引入了类指针压缩空间。

jcmd
JVM 诊断命令工具 - 将诊断命令申请发送到正在运行的 Java 虚拟机,能够查看 JVM 信息
jcmd [-l|-h|-help]

先应用 jps 获取 [pid]
应用 jcmd [pid] help 来查看都反对什么命令

选一个参数,比方打印堆的信息,应用 jcmd 31007 GC.heap_info 命令

还能够进一步查看命令的班帮忙信息 jcmd 31007 help GC.heap_dump

jmap
jmap 是一个重要的工具,查看内存详细信息,能够 dump 到文件中
应用:

jmap [-F] -dump:live,format=b,file=/tmp/a pid

-F 示意强制执行,live 示意收集存活的对象,file 存储到某个文件。dump 文件下来后,能够应用工具来剖析堆内存,包含 jmap -histo、mat 等
jmap [-F] -histo pid

查看堆内存的状况,依照对象数和对象占用的内存排队,能够初步定位到是哪个对象占用过多内存,内存透露的中央。前面应用 mat 工具能剖析到哪个来存储的这个对象,也就是 GCroot 在哪
jmap [-F] heap pid

heap 能查看以后应用的垃圾收集器是什么和一些参数策略,还有具体的内存散布,个别用不到。参数能够用 jinfo,内存散布能够用 jstat

jhat
jhat 会剖析一个 dump 文件,而后把后果公布到一个 html 服务器上,有肯定的用处,html 也是次要看 histogram。和咱们的 jmap -histo 性能相似,所以楼主感觉用途不大。
应用:
jhat file

返回拜访 127.0.0.1:7000 查看 histogram

jstack
jstack 是比拟有用的一个命令,查看线程的状况,蕴含锁,打印 Java 过程,外围文件或近程调试服务器的 Java 线程堆栈跟踪, 俗称 javacore
应用:
jstack [-F] [-l] pid
- l 蕴含锁信息

jconsole
查看 jvm 的内存,cpu 信息,线程,参数,类信息

jvisualvm
是一个比拟好用的工具,界面性能更弱小,界面更敌对。
也是监控内存,cpu,线程,类信息和参数的。还能够执行 dump 和 javacore 的生成。


如果产线容许的话,能够间接连贯到产线发现解决问题。设置近程 ip 和 jmx 端口。当然产线的 java 启动须要设置 jmx 配置:
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=18080

mat
mat 是一个比拟弱小的剖析堆溢出的工具。把之前 dump 文件导入到工具中。
首先看 overview。

有几个比拟重要的信息。
1、图中列出的大对象
左击 list object->with outgoing references,查看次大对象是哪个 GCroot。

shallow heap 为本对象大小,retained heap 为理论蕴含的对象的总大小。次要看 retained heap,一层一层开展,可能看到哪个类中存在存储大对象。
2、histogram
和 jmap -histo 和 jhat 中的相似。
3、dominator tree
查看各个对象的 GCroot,和第一个点相似
4、leak suspects
内存透露疑点报告,会把可能的内存透露点展现,再查看 detail,就能看到具体信息。

正文完
 0