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. Background removal with deep learning

    [原文链接] Background removal with deep learning   This post describes our work and research on the gree ...

  2. git 设置tracking information

    There is no tracking information for the current branch.Please specify which branch you want to merg ...

  3. vue中子传父,父传子的具体用法

    先说明下父组件Login,子组件signCon 子拿到父数据可以通过,在子组件里面设置props:['name']的方法拿到. 首先在父组件中定义数据了: data(){Englishname:'li ...

  4. 剑指offer——python【第14题】链表中倒数第k个节点

    题目描述 输入一个链表,输出该链表中倒数第k个结点. 思路 注意,看清楚,是输出节点,而不是输出节点值 可以先求出链表总长度,然后正向遍历得到第n个节点 解答 class Solution: def ...

  5. python学习之旅(三)

    Python基础知识(2):运算符 一.算术运算符 加 +,减 -,乘 *,除 /,幂 **,求余 %,取整 // 二.成员运算符 in,not in 判断一个字符是否在字符串中 name = &qu ...

  6. 谁考了第k名

    题目描述: 在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第k名学生的学号和成绩. 输入: 第一行有两个整数,分别是学生的人数n(1≤n≤100),和求第k名学生的k(1≤k ...

  7. sql server中的charindex函数用法解析(在一段字符中搜索字符或者字符串-----返回expression1在expression2出现的位置;反之,返回0)

    https://blog.csdn.net/xinghuo0007/article/details/70651358 知识点一:charindex()语法 CHARINDEX ( expression ...

  8. Codeforces 1089K - King Kog's Reception - [线段树][2018-2019 ICPC, NEERC, Northern Eurasia Finals Problem K]

    题目链接:https://codeforces.com/contest/1089/problem/K time limit per test: 2 seconds memory limit per t ...

  9. Ps去除背景

    http://www.16xx8.com/photoshop/jiaocheng/26905.html

  10. [转载] apache ab压力测试报错(apr_socket_recv: Connection reset by peer (104))

    遇见相同的问题. https://www.cnblogs.com/felixzh/p/8295471.html -------------------------------------------- ...