jstat&jamp命令使用

进制在线转换工具:https://www.uutils.com/enc/num_hex_convert.htm#google_vignette

1 jstack
jstack简介:jstack是用于生成java虚拟机当前时刻的线程快照。线程快照是当前iava虚拟机内存每一条线程正在执行的方法堆栈的集合,
生成线程快照的主要目的是定位线程出现长时间停顿的原因。

命令所在路径:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64/bin/jstack

jstack 用法
jstack [ option ] pid

jstack [ option ] executable core

jstack [ option ] [server-id@]remote-hostname-or-IP

jstack [option] <pid> >jstack.log // 打印进程的堆栈信息 到jstack.log 中

(1)executable:Java executable from which the core dump was produced.(可能是产生core dump的java可执行程序)
(2)core 将被打印信息的core dump文件
(3)remote-hostname-or-IP 远程debug服务的主机名或ip
(4)server-id 唯一id,假如一台主机上多个远程debug服务

选项    作用
-F        当正常输出的请求不被响应时,强制输出线程堆栈。
-m        如果调用到本地方法的话,可以显示C/C++的堆。
-l        除堆栈外,显示关于锁的附加信息,在发生死锁时可以用jstack -l pid来观察锁持有情况。


jstack实战操作
1.1 通过 top 命令查看各个进程的cpu使用情况,它默认是按cpu使用率由高到低排序的。
1.2 top -Hp pid:查看该进程下,各个线程的cpu使用情况。
1.3 jstack pid:通过top命令定位到cpu占用率较高的线程之后,接着使用jstack pid命令来查看当前java进程的堆栈状态。
1.4 jstack -l PID >/apps/svr/sdp-servers/log/dump.log:输出堆栈信息到文件中
1.5 把占用cpu资源较高的线程pid,将该pid转成16进制的值。


2 jmap
jmap简介:jmap(Java Virtual Machine Memory Map)是JDK提供的一个可以生成Java虚拟机的堆转储快照dump文件的命令行工具。

命令所在路径:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64/bin/jmap


生成Java虚拟机的堆转储快照dump文件:

生成dump文件命令参数:-dump:[live,]format=b,file=/具体目录/dump.hprof,具体说明如下:

live参数是可选的,如果指定,则只转储堆中的活动对象;如果没有指定,则转储堆中的所有对象。
format=b表示以 hprof 二进制格式转储Java堆的内存。
file=<filename>用于指定快照dump文件的文件名。

/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64/bin/jmap -dump:format=b,file=/apps/svr/amp/dump0915.hprof 20366

jamp详解:https://blog.csdn.net/phzy20131004/article/details/120455688

posted @ 2024-07-22 15:16  BlogMemory  阅读(1)  评论(0编辑  收藏  举报