java堆内存jstat_jvm监控工具jps,jstat,jstack,jmap的使用方法

在平常运维分析jvm的时候通常用到的工具的jps,jstat,jstack,jmap用于分析tomcat遇到的各种问题

tomcat常见的问题有:

OOM,线程死锁(lock dead),锁争用(lock contention),Java消耗过多的CPU

可以通过以上工具进行分析

生产常用分析方法快速入口:

#jps        --> 查看运行的java进程

#jstat -gc 进程pid --> 查看进程新生代老年代的内存使用情况,年轻代老年代垃圾收集次数及时间

#jstat -gccause 进程pid --> 查看进程垃圾收集原因

#jmap -heap 进程pid --> 查看进程堆内存具体使用情况

#jstack -l 进程pid --> 查看线程信息,用于分析线程争取,死锁造成tomcat假死的情况

jps:java虚拟机进程查看工具

jps [options] [hostid]

-m:输出传入main方法的参数

-l:显示main的完整类名

-v:显示为jvm虚拟机指定的参数

常用的组合:

#jps -m -l

#jps -m -l -v[gcct1@localhost bin]$ jps -m -l -v

5966 org.apache.catalina.startup.Bootstrap start -Djava.util.logging.config.file=/mnt/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/mnt/tomcat/endorsed -Dcatalina.base=/mnt/tomcat -Dcatalina.home=/mnt/tomcat -Djava.io.tmpdir=/mnt/tomcat/temp

7006 sun.tools.jps.Jps -m -l -v -Denv.class.path=.:/usr/java/jdk1.7.0_79/lib/dt.jar:/usr/java/jdk1.7.0_79/lib/tools.jar -Dapplication.home=/usr/java/jdk1.7.0_79 -Xms8m

jstat:jvm虚拟机运行时内存使用及垃圾回收情况监控

jstat - pid:(为必须选项)

-options:查看有哪些选项可以使用

-gc:使用此选项时,后面加java的进程号;例jstat -gc 27564 [1s](也可跟上多少时间显示一次)

S0C,S1C:表示第一个和第二个生存区的容量

S0U,S1U:表示第一个和第二个生存区的已使用的容量

EC,EU:表示eden区域的容量和已用量

OC,OU:表示老年代区的容量和已用量

PC,PU:表示持久代的内存容量和已用量

YGC,YGT:表示新生代的GC发生的次数和耗时

FGCT,FGCT:表示老年代Full GC发生的次数和耗时

GCT:表示总的GC耗时

-gccause:

LGCC:上次GC的原因

GCC:当前GC的原因[gcct1@localhost bin]$ jstat -gc 5966

S0C    S1C    S0U    S1U      EC       EU        OC         OU       PC     PU    YGC     YGCT    FGC    FGCT     GCT

40960.0 36864.0  0.0   36850.3 253952.0 161159.5  109056.0   74574.4   53248.0 45852.6     19    1.672   3      2.193    3.865

[gcct1@localhost bin]$ jstat -gccause 5966

S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT    LGCC                 GCC

0.00  99.96  63.76  68.38  86.11     19    1.672     3    2.193    3.865 Allocation Failure   No GC

jmap:查看堆内存使用情况,包括使用的GC算法,堆配置参数和各代堆内存使用情况,跟jstat有点类似

-heap:详细的输出堆内存的使用情况

-histo:显示所有的对象信息

-histo:live:手动触发full GC,然后显示存活的对象信息(常用于老年代调优)

-h:获取帮助信息

例:jmap -heap 5966   --> 查看堆内存的详细使用情况[gcct1@localhost bin]$ jmap -heap 5966

Attaching to process ID 5966, please wait...

Debugger attached successfully.

Server compiler detected.

JVM version is 24.79-b02

using thread-local object allocation.

Parallel GC with 2 thread(s)

Heap Configuration:

MinHeapFreeRatio = 0

MaxHeapFreeRatio = 100

MaxHeapSize      = 1019215872 (972.0MB)

NewSize          = 1310720 (1.25MB)

MaxNewSize       = 17592186044415 MB

OldSize          = 5439488 (5.1875MB)

NewRatio         = 2

SurvivorRatio    = 8

PermSize         = 21757952 (20.75MB)

MaxPermSize      = 85983232 (82.0MB)

G1HeapRegionSize = 0 (0.0MB)

......

jstack:查看某个java进程内的线程堆栈信息

jstack [options] pid

-l:long listings(会输出完整的锁信息);jstack -l 进程号

-m:混合模式,即会输出java堆栈及C/C++堆栈信息

通过jstack可以查看线程争用,线程死锁等信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值