天津在哪做网站wordpress增加文章目录
目录
jmap
查看堆使用情况
查看类列表,包含实例数、占用内存大小
生成jvm的堆转储快照dump文件
jstat
查看gc的信息,查看gc的次数,及时间
查看VM内存中三代(young/old/perm)对象的使用和占用大小
查看元数据空间统计
查看年轻代对象的信息
查看年轻代对象的信息及其占用量
查看老年代对象的信息
查看老年代对象的信息及其占用量
查看最近一次GC统计和原因
jps
查看当前运行中java的进程
查看进程启动时传递给main()的参数
查看进程启动时的JVM参数
部分报错情况
Cannot connect to core dump or remote debug server. Use jhsdb jmap instead
ERROR: ptrace(PTRACE_ATTACH, ..) failed for 30865: Operation not permitted...
jmap
查看堆使用情况
jmap -heap [pid] 
查看类列表,包含实例数、占用内存大小
jmap -histo [pid] 
如果带上live则只统计活对象:
jmap -histo:live [pid] 
生成jvm的堆转储快照dump文件
jmap -dump:format=b,file=dumpFileName [pid] 
jstat
查看JVM统计信息,类装载、内存、垃圾收集、JIT编译等运行数据。
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]] 
查看gc的信息,查看gc的次数,及时间
jstat -gc [pid] 
信息说明:
- S0C: 年轻代中第一个survivor(幸存区)的容量 (字节)
 - S1C: 年轻代中第二个survivor(幸存区)的容量 (字节)
 - S0U: 年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
 - S1U: 年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
 - EC: 年轻代中Eden的容量 (字节)
 - EU: 年轻代中Eden目前已使用空间 (字节)
 - OC: 老年代的容量 (字节)
 - OU: 老年代目前已使用空间 (字节)
 - MC: metaspace(元空间)的容量 (字节)
 - MU: metaspace(元空间)目前已使用空间 (字节)
 - CCSC:当前压缩类空间的容量 (字节)
 - CCSU:当前压缩类空间目前已使用空间 (字节)
 - YGC: 从应用程序启动到采样时年轻代中gc次数
 - YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
 - FGC: 从应用程序启动到采样时老年代(全gc)gc次数
 - FGCT:从应用程序启动到采样时老年代(全gc)gc所用时间(s)
 - GCT: 从应用程序启动到采样时gc用的总时间(s)
 
查看VM内存中三代(young/old/perm)对象的使用和占用大小
jstat -gccapacity [pid] 
信息说明:
- NGCMN: 年轻代(young)中初始化(最小)的大小(字节)
 - NGCMX: 年轻代(young)的最大容量 (字节)
 - NGC: 年轻代(young)中当前的容量 (字节)
 - S0C: 年轻代中第一个survivor(幸存区)的容量 (字节)
 - S1C: 年轻代中第二个survivor(幸存区)的容量 (字节)
 - EC: 年轻代中Eden的容量 (字节)
 - OGCMN:老年代中初始化(最小)的容量大小 (字节)
 - OGCMX:老年代的最大容量(字节)
 - OGC: 老年代当前新生成的容量 (字节)
 - OC: 老年代的容量 (字节)
 - MCMN: metaspace(元空间)中初始化(最小)的大小 (字节)
 - MCMX: metaspace(元空间)的最大容量 (字节)
 - MC: metaspace(元空间)当前新生成的容量 (字节)
 - CCSMN:最小压缩类空间大小
 - CCSMX:最大压缩类空间大小
 - CCSC: 当前压缩类空间大小
 - YGC: 从应用程序启动到采样时年轻代中gc次数
 - FGC: 从应用程序启动到采样时老年代(全gc)gc次数
 
查看元数据空间统计
jstat -gcmetacapacity [pid] 
信息说明:
- MCMN: 最小元数据容量
 - MCMX: 最大元数据容量
 - MC: 当前元数据空间大小
 - CCSMN:最小压缩类空间大小
 - CCSMX:最大压缩类空间大小
 - CCSC: 当前压缩类空间大小
 - YGC: 从应用程序启动到采样时年轻代中gc次数
 - FGC: 从应用程序启动到采样时老年代(全gc)gc次数
 - FGCT: 从应用程序启动到采样时老年代(全gc)gc所用时间(s)
 - GCT: 从应用程序启动到采样时gc用的总时间(s)
 
查看年轻代对象的信息
jstat -gcnew [pid] 
信息说明:
- S0C: 年轻代中第一个survivor(幸存区)的容量 (字节)
 - S1C: 年轻代中第二个survivor(幸存区)的容量 (字节)
 - S0U: 年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
 - S1U: 年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
 - TT: 持有次数限制
 - MTT: 最大持有次数限制
 - DSS: 期望的幸存区大小
 - EC: 年轻代中Eden的容量 (字节)
 - EU: 年轻代中Eden目前已使用空间 (字节)
 - YGC: 从应用程序启动到采样时年轻代中gc次数
 - YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
 
查看年轻代对象的信息及其占用量
jstat -gcnewcapacity [pid] 
信息说明:
- NGCMN: 年轻代(young)中初始化(最小)的大小(字节)
 - NGCMX: 年轻代(young)的最大容量 (字节)
 - NGC: 年轻代(young)中当前的容量 (字节)
 - S0CMX: 年轻代中第一个survivor(幸存区)的最大容量 (字节)
 - S0C: 年轻代中第一个survivor(幸存区)的容量 (字节)
 - S1CMX: 年轻代中第二个survivor(幸存区)的最大容量 (字节)
 - S1C: 年轻代中第二个survivor(幸存区)的容量 (字节)
 - ECMX: 年轻代中Eden的最大容量 (字节)
 - EC: 年轻代中Eden的容量 (字节)
 - YGC: 从应用程序启动到采样时年轻代中gc次数
 - FGC: 从应用程序启动到采样时old代(全gc)gc次数
 
查看老年代对象的信息
jstat -gcold [pid] 
信息说明:
- MC: metaspace(元空间)的容量 (字节)
 - MU: metaspace(元空间)目前已使用空间 (字节)
 - CCSC:压缩类空间大小
 - CCSU:压缩类空间使用大小
 - OC: Old代的容量 (字节)
 - OU: Old代目前已使用空间 (字节)
 - YGC: 从应用程序启动到采样时年轻代中gc次数
 - FGC: 从应用程序启动到采样时old代(全gc)gc次数
 - FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
 - GCT: 从应用程序启动到采样时gc用的总时间(s)
 
查看老年代对象的信息及其占用量
jstat -gcoldcapacity [pid] 
信息说明:
- OGCMN:Old代中初始化(最小)的大小 (字节)
 - OGCMX:Old代的最大容量(字节)
 - OGC: Old代当前新生成的容量 (字节)
 - OC: Old代的容量 (字节)
 - YGC: 从应用程序启动到采样时年轻代中gc次数
 - FGC: 从应用程序启动到采样时old代(全gc)gc次数
 - FGCT: 从应用程序启动到采样时old代(全gc)gc所用时间(s)
 - GCT: 从应用程序启动到采样时gc用的总时间(s)
 
查看最近一次GC统计和原因
jstat -gccause [pid] 
信息说明:
- LGCC:最后一次GC原因
 - GCC: 当前GC原因(No GC 为当前没有执行GC)
 
jps
查看当前运行中java的进程
jps 
查看进程启动时传递给main()的参数
jps -m 
查看进程启动时的JVM参数
jps -v 
部分报错情况
Cannot connect to core dump or remote debug server. Use jhsdb jmap instead
jdk版本原因所导致的,在jdk8以后需要加上 jhsdb 以运行(注意这里的格式):
jhsdb jmap --heap --pid [pid] 
ERROR: ptrace(PTRACE_ATTACH, ..) failed for 30865: Operation not permitted...

新版的Linux系统(Ubuntu 11.04之后会出现这种问题)加入了 ptrace-scope 机制。这种机制为了防止用户访问当前正在运行的进程的内存和状态,而一些调试软件本身就是利用 ptrace 来进行获取某进程的内存状态的(包括GDB),所以在新版本的Linux系统,默认情况下不允许再访问了, 可以临时开启(注意权限):
echo 0 > /proc/sys/kernel/yama/ptrace_scope 
永久修改:
vi  /etc/sysctl.d/10-ptrace.conf kernel.yama.ptrace_scope = 0  
