1、查看进程下线程信息
ps p 1 -L -o pcpu,pid,tid,time,tname,cmd,pmem,rss,wchan:30,psr,stat
标准格式说明符:
代码 | 头部 | 描述 |
%mem | %MEM | 进程占用物理内存的百分比 |
args | COMMAND | 输出命令及其全部参数 |
cmd | CMD | alias args |
comm | COMMAND | 仅输出可执行文件的名字 |
command | COMMAND | alias args |
etime | ELAPSED | 输出进程的运行时间,时间格式如下:[[dd-]hh:]mm:ss(运行时间没有超过一天则不显示dd-,如果运行时间还不到一小时,则显示格式为mm:ss) |
euser | EUSER | 输出进程的执行者的用户名(有时是显示执行者的uid) |
lstart | STARTED | 输出进程启动时刻 |
pid | PID | 输出进程的进程号 |
psr | PSR | 进程当前被分配的处理器 |
pmem | %MEM | alias %mem |
rss | RSS | 物理内存的使用大小(单位为KB) |
rssize | RSS | alias rss |
rsz | RSZ | alias rss |
s | S | 最小状态显示(只显示一个字符) |
stat | STAT | 多字符状态显示(显示更详细的进程状态信息) |
state | S | alias s |
uname | USER | alias euser |
user | USER | alias euser |
wchan:30 | wchan:30 | 在内核中的使用方法,正在等待的进程资源; |
TIME | TIME | 进程消耗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 向上滚动一屏