JVM常用的分析命令

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在Java应用运行中有时候会出现CPU或内存飙升等问题,这时候我们可以通过一些JVM命令分析一下对应进程的虚拟机运行状态以定位和解决问题,并且优化程序,是Java程序员必备技能。

一、jps,查看Java进程信息

在Linux系统中,如果我们要找到一个Java进程的pid,一般使用ps命令,而查找的是Java程序的进程的话,使用jps更加简单方便:

二、jinfo,查看或动态修改一些JVM参数

命令格式:jinfo [option]进程号

options可选参数:

-flag 输出指定名称的参数信息

-flag [+|-] 打开或者关闭参数

-flag = 设置参数

-flags 输出所有参数

-sysprops 输出系统配置

输出-flags、-sysprops两个选项

其中:

-XX:InitialHeapSize:初始堆大小,默认为物理内存的1/64(<1GB);

-XX:MaxHeapSize:最大堆大小;

-XX:NewSize:新生代的内存空间大小;

-XX:OldSize:老年代的内存空间大小;

三、jstat,查看JVM运行时的内存状态、垃圾回收等状态信息。

命令格式:jstat [option] pid [interval] [count]

其中pid是进程id,interval是输出间隔时间(毫秒),count是输出次数(默认一直输出)

Option可选参数:

•-class class loader的行为统计

•-compiler HotSpt JIT编译器行为统计

•-gc 垃圾回收堆的行为统计

•-gccapacity 各个垃圾回收代容量(young,old,perm)和他们相应的空间统计

•-gcutil 垃圾回收统计概述

•-gccause 垃圾收集统计概述(同-gcutil),附加最近两次垃圾回收事件的原因

•-gcnew 新生代行为统计

•-gcnewcapacity 新生代与其相应的内存空间的统计

•-gcold 年老代和永生代行为统计

•-gcoldcapacity 年老代行为统计

•-gcpermcapacity 永生代行为统计

•-printcompilation HotSpot编译方法统计

其中:

•S0C survivor0大小

•S1C survivor1大小

•S0U survivor0已使用大小

•S1U survivor1已使用大小

•EC Eden区大小

•EU Eden区已使用大小

•OC 老年代大小

•OU 老年代已使用大小

•MC 方法区大小

•MU 方法区已使用大小

•CCSC 压缩类空间大小

•CCSU 压缩类空间已使用大小

•YGC 年轻代垃圾回收次数

•YGCT 年轻代垃圾回收消耗时间

•FGC 老年代垃圾回收次数

•FGCT 老年代垃圾回收消耗时间

•GCT 垃圾回收消耗总时间

四、jstack,可以定位线程中出现长时间卡顿,死循环等原因的代码。

命令格式:jstack [option] pid

option参数解释:

•-F连接挂起的进程。

•-l连接运行中的进程

•-m 同时输出java和本地堆栈(混合模式)

首先,我们先用top –Hp 命令,找到Java进程的每个线程pid,如下图所示,第一列就是Java进程下每个线程的pid:

然后用printf命令将十进制的pid转为十六进制:

最后用jstack命令结合grep命令定位线程代码入口:

jstack 16028|grep 3e9c -A 30

五、jmap,是用来生成堆dump文件和查看堆相关的类详细信息以及使用情况。

命令格式:jmap [option] pid

option参数解释:

to print same info as Solaris pmap

•-heap 输出java堆信息

•-histo[:live] 输出堆中的java对象统计信息

•-clstats 输出类加载器统计信息

•-finalizerinfo 输出在f-queue中等待执行finalizer方法的对象

•-dump: 生成java堆的dump文件

dump-options:

live 只转储存活的对象,如果没有指定则转储所有对象

format=b 二进制格式

file= 转储文件到

•-F 强制选项

使用示例:

jmap –dump:live,fromat=b,file=class.txt 16028

相关文档
最新文档