https://www.cnblogs.com/keanuyaoo/p/3253663.html

常用命令目录:

 

1. jps

用于查看JVM里面所有进程的具体状态,包括进程ID,进程启动的路径等等

参数格式:

-m 输出传递给main方法的参数,如果是内嵌的JVM则输出为null。

-l 输出应用程序主类的完整包名,或者是应用程序JAR文件的完整路径。(非常适用于task任务)

-v 输出传给JVM的参数。

示例:

[yang@vm-cbu-qa-172-43 ~]$ jps
12384 start.jar
10991 TimeoutMain
4309 AliWWMain
24586 Jps
[yang@vm-cbu-qa-172-43 ~]$ jps -v
12384 start.jar -DappName=tradecenter:6100 -Dcom.taobao.pandora.tmp_path=/home/yang/output/logs/6100/pandora -DHSF.LOG.PATH=/home/yang/output/logs/6100/hsf -Xms256m -Xmx1024m -XX:MaxPermSize=128m -Ddatabase.codeset=ISO-8859-1 -Ddatabase.logging=false -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dapplication.codeset=GBK -Djava.util.logging.config.file=/home/yang/work/tc/tradecenter.deploy/target/web-deploy/conf/general/logging.properties -Dcom.sun.management.config.file=/home/yang/work/tc/tradecenter.deploy/target/web-deploy/conf/jmx/jmx_monitor_management.properties -Dorg.eclipse.jetty.util.URI.charset=GBK -Dhsf.configuration.dir=/home/yang/work/tc/tradecenter.deploy/target/web-deploy/jetty_server_home/tmp -Dlog4j.defaultInitOverride=false -Dcom.taobao.hsf.deploy.serverport=6130 -Dproject.name=tradecenter -Dhsf.server.port=6130 -Ddubbo.service.server.port=6100 -Ddragoon.instance.number=0 -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=6208,server=y,suspend=n -Dcom.sun.management.jmxr
10991 TimeoutMain -DTaskName=timeoutManager -Xms128m -Xmx512m -XX:PermSize=64m -Djox.xml.encodinged=true -Xdebug -Xrunjdwp:transport=dt_socket,address=9000,server=y,suspend=n
4309 AliWWMain -DTaskName=aliwwSender -Xms128m -Xmx512m -XX:PermSize=64m -Djox.xml.encodinged=true -Xdebug -Xrunjdwp:transport=dt_socket,address=8333,server=y,suspend=n -DhsfHome=/home/yang/work/tt/trade.task/target/expand/taobao-hsf.sar -Dproject.name=tradetask
24604 Jps -Dapplication.home=/usr/alibaba/install/jdk1.6.0_25 -Xms8m
[yang@vm-cbu-qa-172-43 ~]$ jps -l
12384 /usr/alibaba/jetty/start.jar
10991 com.alibaba.china.trade.task.timeout.TimeoutMain
4309 com.alibaba.china.trade.task.aliww.AliWWMain
24666 sun.tools.jps.Jps
[yang@vm-cbu-qa-172-43 ~]$
 

2. jstat

1)简介:

Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。由于JVM内存设置较大,图中百分比变化不太明显一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。

jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。

它主要是用来显示GC及PermGen相关的信息.

2)参数:

-class Option

-compiler Option

-gc Option

-gccapacity Option

-gccause Option

-gcnew Option

-gcnewcapacity Option

-gcold Option

-gcoldcapacity Option

-gcpermcapacity Option

-gcutil Option

-printcompilation Option

注:其中最常用的就是  -gcutil  选项了,因为他能够给我们展示大致的GC信息。

Option:指的是vmid、显示间隔时间及间隔次数等

vmid    —VM的进程号,即当前运行的java进程号

interval– 间隔时间,单位毫秒

count   — 打印次数,如果缺省则打印无数次

3)输出结果

S0  — Heap上的 Survivor space 0 区已使用空间的百分比

S0C:S0当前容量的大小

S0U:S0已经使用的大小

S1  — Heap上的 Survivor space 1 区已使用空间的百分比

S1C:S1当前容量的大小

S1U:S1已经使用的大小

E   — Heap上的 Eden space 区已使用空间的百分比

EC:Eden space当前容量的大小

EU:Eden space已经使用的大小

O   — Heap上的 Old space 区已使用空间的百分比

OC:Old space当前容量的大小

OU:Old space已经使用的大小

P   — Perm space 区已使用空间的百分比

PC:Perm space当前容量的大小

PU:Perm space已经使用的大小

YGC — 从应用程序启动到采样时发生 Young GC 的次数

YGCT– 从应用程序启动到采样时 Young GC 所用的时间(单位秒)

FGC — 从应用程序启动到采样时发生 Full GC 的次数

FGCT– 从应用程序启动到采样时 Full GC 所用的时间(单位秒)

GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒),它的值等于YGC+FGC

4)示例

图中同时打印了young gc和full gc的总次数、总耗时。而每次young gc消耗的时间,可以用相间隔的两行(红线标示的)YGCT相减得到。每次full gc消耗的时间,可以用相隔的两行FGCT相减得到。

常驻内存区(P)的使用率,始终停留在64.78%左右,说明常驻内存没有突变,比较正常。如果young gc和full gc能够正常发生,而且都能有效回收内存,常驻内存区变化不明显,则说明java内存释放情况正常,垃圾回收及时,java内存泄露的几率就会大大降低,但也不能说明一定没有内存泄露。

jstat -class 进程id      显示加载 class 的数量,及所占空间等信息。

[yang@vm-cbu-qa-172-43 ~]$ jstat -class 12384 2000
Loaded Bytes Unloaded Bytes Time
11493 23583.9 195 291.8 12.31
 

3. jinfo

格式:jinfo 进程id

观察运行中的java程序的运行环境参数:参数包括Java System属性和JVM命令行参数

 

4. jstack

观察jvm中当前所有线程的运行情况和线程当前状态

详细使用可参考《java服务器load飚高排查思路

 

5. jmap

1)简介

输出内存中对象的工具,打印出某个java进程在内存中所有“对象”的使用情况(如:产生那些对象、数量)

使用方法 jmap -histo pid。如果使用 jmap -histo pid > aa.log 可以将二进制输出到文本(aa.log)中,在一段时间后,使用文本比较工具,可以对比出GC回收了哪些对象。

jmap -dump:format=b,file=heap.bin  12384  可以将12384进程的内存堆栈输出到heap.bin 文件里,再配合MAT(内存分析工具(Memory Analysis Tool),参考文章  或 jhat (Java Heap Analysis Tool)一起使用,能够以图像的形式直观的反映当前内存是否存在问题。

如果你的机子是64位,格式:jmap -J-d64 -heap pid

2)参数格式

-dump:[live,]format=b,file=<filename> 使用hprof二进制形式,输出jvm的heap内容到文件中。 live子选项是可选的,假如指定live选项,那么只输出活的对象

-finalizerinfo 打印正等候回收的对象的信息.

-heap 打印heap的概要信息(年轻代、年老代、持久代的概括使用情况),GC使用的算法,heap的配置及wise heap的使用情况。

-histo[:live] 输出每个对象的实例个数、占用字节数、类全名信息。 VM的内部类名字开头会加上前缀”*”。如果加上live子参数,只统计活的对象数量。(ps:默认按内存中占用的字节数大小排序,使用场景较多)

-permstat 打印classloader和jvm heap的信息。 包含classloader的名字、加载的class数量、占用内存大小、父classloader、活跃性、类型。

3)实例

[yang@vm-cbu-qa-172-43 ~]$ jmap -histo 12384 >aa.log 

线上问题排查(2)——JDK内置工具的更多相关文章

  1. JDK内置工具命令

    javap Java反编译工具,主要用于根据Java字节码文件反汇编为Java源代码文件用法:javap 用法 描述 javap -help —help -? 输出此用法消息 javap -versi ...

  2. JDK内置工具之一——JMap(java memory map)

    1.介绍 打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量). 可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本.使用方法 j ...

  3. JDK内置工具使用(jps、jstack、jmap、jstat)

    一.JPS 1.jps -lvm:用于查看当前机器上已装载的jvm 二.jstackjstack命令主要用来查看Java线程的调用堆栈的,可以用来分析线程问题(如死锁) 1.jstack -l pid ...

  4. JDK内置工具jstack(Java Stack Trace)(转)

    1.介绍 jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项"-J-d64",Windows的js ...

  5. JDK内置工具使用

  6. JDK内置性能监测工具使用

    Java自带的性能监测工具用法简介——jstack.jconsole.jinfo.jmap.jdb.jsta.jvisualvmJDK内置工具使用 一.javah命令(C Header and Stu ...

  7. BTrace:线上问题排查工具

    BTrace简介 GitHub地址:BTrace 下载地址:v1.3.11.3 官方使用教程:Btrace使用教程 使用场景 BTrace 是一个事后工具,所谓事后工具就是在服务已经上线了,但是发现存 ...

  8. JDK内置锁深入探究

    一.序言 本文讲述仅针对 JVM 层次的内置锁,不涉及分布式锁. 锁有多种分类形式,比如公平锁与非公平锁.可重入锁与非重入锁.独享锁与共享锁.乐观锁与悲观锁.互斥锁与读写锁.自旋锁.分段锁和偏向锁/轻 ...

  9. JDK内置日志系统

    1.Java应用中的日志功能 ================= 一般的Java应用程序中都有记录日志的需求,目前主流的记录日志的方法是在应用程序中引入log4j,用log4j来生成日志.其实,JDK ...

随机推荐

  1. java中的静态代理和动态代理

    1.动态代理的定义:为其他对象提供一个代理以控制对这个对象的访问 代理类主要负责委托类的预处理消息,过滤消息,把消息传给委托类以及消息事后处理 按照代理类的创建时期,代理类可以分为2种:静态代理类(在 ...

  2. java开发mis系统所需技术及其作用

    MIS(管理信息系统--Management Information System)系统 ,是一个由人.计算机及其他外围设备等组成的能进行信息的收集.传递.存贮.加工.维护和使用的系统. 是一门新兴的 ...

  3. SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)【申明:来源于网络】

    SSM框架--详细整合教程(Spring+SpringMVC+MyBatis)[申明:来源于网络] 地址:http://blog.csdn.net/u014662268/article/details ...

  4. 主席树 || 可持久化线段树 || BZOJ 3653: 谈笑风生 || Luogu P3899 [湖南集训]谈笑风生

    题面:P3899 [湖南集训]谈笑风生 题解: 我很喜欢这道题. 因为A是给定的,所以实质是求二元组的个数.我们以A(即给定的P)作为基点寻找答案,那么情况分两类.一种是B为A的父亲,另一种是A为B的 ...

  5. Codeforces 584 - A/B/C/D/E - (Done)

    链接:https://codeforces.com/contest/584 A - Olesya and Rodion - [水] 题解:注意到 $t$ 的范围是 $[2,10]$,对于位数小于 $2 ...

  6. openERP笔记 自定义模块开发

    ##需求描述 输入和查询课程,把信息储存到课程对象里 课程包含以下信息:名称,价格,天数,开始日期,教师,学员 每个课程可以有多个学员,要记录学员的姓名.电话.电子邮件 课程可以添加教材和作业等文档附 ...

  7. VBA语法总结

    为了控制Excel,学了些VBA,总结下语法,下文分为五部分: 一.代码组织 二.常用数据类型 三.运算符 四.控制流 五.常用内置函数 一.代码组织 1.能写代码的地方有{模块,类模块}. 2.代码 ...

  8. Lint found fatal errors while assembling a release target

    1.Android 打包错误信息 Generate signed Bundle or APK  打包时,报了一个错,错误信息如下: Error:Execution failed for task ´: ...

  9. expdp 字符集从ZHS16GBK到AL32UTF8

    源oracle数据库是GBK字符集,目标库是UTF8字符集,现在需要将源库的一个表空间数据导入到目标库.我的解决方法有点繁琐,首先直接导出源库的表空间 expdp trmuser/trmpass sc ...

  10. ORA-39006错误原因及解决办法

    使用impdp导出数据时碰到ora-39006错误,错误提示如下所示: ORA-39006: internal error ORA-39213: Metadata processing is not ...