jvm性能问题排查常用命令

1、查看进程下线程信息

ps p 1 -L -o pcpu,pid,tid,time,tname,cmd,pmem,rss,wchan:30,psr,stat

标准格式说明符:

代码头部描述
%mem%MEM进程占用物理内存的百分比
argsCOMMAND输出命令及其全部参数
cmdCMDalias args
commCOMMAND仅输出可执行文件的名字
commandCOMMANDalias args
etimeELAPSED输出进程的运行时间,时间格式如下:[[dd-]hh:]mm:ss(运行时间没有超过一天则不显示dd-,如果运行时间还不到一小时,则显示格式为mm:ss)
euserEUSER输出进程的执行者的用户名(有时是显示执行者的uid)
lstartSTARTED输出进程启动时刻
pidPID输出进程的进程号
psrPSR进程当前被分配的处理器
pmem%MEMalias %mem
rssRSS物理内存的使用大小(单位为KB)
rssizeRSSalias rss
rszRSZalias rss
sS最小状态显示(只显示一个字符)
statSTAT多字符状态显示(显示更详细的进程状态信息)
stateSalias s
unameUSERalias euser
userUSERalias euser
wchan:30wchan:30在内核中的使用方法,正在等待的进程资源;
TIMETIME进程消耗CPU的时间
进程状态代码stat:
D      不可中断睡眠
R      正在运行或可运行(或者位于运行队列中)
S      可中断睡眠
T      已终止、停止或被追踪
X      已死(should never be seen)
Z      已故进程,已终止但还未被其父进程回收、僵尸进程
<      高优先级(对其它用户不友好)
N      低优先级(对其它用户友好)
L      页面锁定在内存
s      含有子进程(is a session leader)进程的领导者(在它之下有子进程)
l      多线程的(使用 CLONE_THREAD, 类似 NPTL pthreads)
+      位于后台的进程组

2、top命令动态查看进程下线程信息

top -H -p 1

在终端界面上:

按f键,进入字段选择界面,

按上下键上下移动,

按d指定排序,

按空格选中、取消展示字段,

按q或esc退出选择。

展示的字段信息同7。

3、垃圾回收统计【按百分比例显示】

jstat -gcutil 1 6000
说明:每6秒一次显示进程号为30149的 java进程垃圾回收统计情况,结果如下图
S0:幸存1区当前使用比例
S1:幸存2区当前使用比例
E:伊甸园区使用比例
O:老年代使用比例
M:元数据区使用比例
CCS:压缩使用比例
YGC:年轻代垃圾回收次数
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间

4、垃圾回收统计总览

jstat -gc 1 6000
说明:每6秒一次显示进程号为30149的 java进程的 GC情况,结果如下图
S0C:第一个幸存区的大小
S1C:第二个幸存区的大小
S0U:第一个幸存区的使用大小
S1U:第二个幸存区的使用大小
EC:伊甸园区的大小
EU:伊甸园区的使用大小
OC:老年代大小
OU:老年代使用大小
MC:方法区大小
MU:方法区使用大小
CCSC:压缩类空间大小
CCSU:压缩类空间使用大小
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间

5、堆内存最小、最大、当前量统计总览

jstat -gccapacity 1
NGCMN    NGCMX     NGC     S0C     S1C       EC      OGCMN      OGCMX       OGC         OC          MCMN     MCMX      MC     CCSMN    CCSMX     CCSC    YGC    FGC
204800.0 204800.0 204800.0 20480.0 20480.0 163840.0   614400.0   614400.0   614400.0   614400.0      0.0    63872.0  63872.0      0.0      0.0      0.0    149     8

    NGCMN:新生代最小容量
    NGCMX:新生代最大容量
    NGC:当前新生代容量
    S0C:第一个幸存区大小
    S1C:第二个幸存区的大小
    EC:伊甸园区的大小
    OGCMN:老年代最小容量
    OGCMX:老年代最大容量
    OGC:当前老年代大小
    OC:当前老年代大小
    MCMN:最小元数据容量
    MCMX:最大元数据容量
    MC:当前元数据空间大小
    CCSMN:最小压缩类空间大小
    CCSMX:最大压缩类空间大小
    CCSC:当前压缩类空间大小
    YGC:年轻代gc次数
    FGC:老年代GC次数

6、查看java 堆(heap结构)使用情况

jmap -heap 1

7、将堆内存使用的详细情况(heap实例)dump输出到文件

jmap -dump:format=b,file=/data/logs/heapdump.hprof  1
​
jhat -J-Xmx512m /data/logs/heapdump.hprof
​
然后使用MAT分析工具,如jhat命令,eclipse的mat插件。    
有时你dump出来的堆很大,在启动时会报堆空间不足的错误,可以使用如下参数:
jhat -J-Xmx512m <heap dump file>
.\jhat.exe E:\heapdump .hprof

8、查看堆内存中的实例数量及占用内存大小

jmap -histo 1
jmap -histo 1 | head -30
jmap -histo 1 > /data/logs/heaphisto.log
默认按照占用内存大小降序排序
jmap -histo 1|sort -k 2 -g -r | head -30
按照实例数量降序排序取前30个
jmap -histo 1|grep redisson|sort -k 3 -g -r    
按照实例数量降序排序取前30个 搜索redisson
    
#instance 是对象的实例个数 
#bytes 是总占用的字节数 
#class name 对应的就是 Class 文件里的 class 的标识 
B 代表 byte
C 代表 char
D 代表 double
F 代表 float
I 代表 int
J 代表 long
Z 代表 boolean
前边有 [ 代表数组, [I 就相当于 int[]
对象用 [L+ 类名表示  

9、打印内存线程栈信息

jstack  -l  1 > /data/logs/jstack.log

10、jinfo 查看 JVM 参数

jinfo -flags 1

11、vi命令使用

搜索(查找)
​
`/abc`    # 从光标开始处向文件尾搜索abc
`?abc`    # 从光标开始处向文件首搜索abc
​
`n` # 在同一方向重复上一次搜索命令
`N` # 在反方向上重复上一次搜索命令
​
Ctrl + f 向下滚动一屏
​
Ctrl + b 向上滚动一屏
​
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值