jdk命令工具

为什么使用jdk命令工具

当系统需要定位问题的时候,这需要我们使用适当的虚拟机监控和分析工具来帮助我们快速定位问题。

jps工具:虚拟机进程状况工具

  1. 作用:列出正在运行的虚拟机进程,并显示虚拟机执行的主类的名称以及进程的本地虚拟机的唯一ID。
  2. jps命令的格式
    jps 【option】【hostid】
hostid指定了目标的服务器,它的语法如下:
[protocol:][[//]hostname][:port][/servername]
protocol - 如果protocol及hostname都没有指定,那表示的是与当前环境相关的本地协议,
如果指定了hostname却没有指定protocol,那么protocol的默认就是rmi。
hostname - 服务器的IP或者名称,没有指定则表示本机。
port - 远程rmi的端口,如果没有指定则默认为1099。
Servername - 注册到RMI注册中心中的jstatd的名称。
  1. jps工具参数


    1.jpg
  2. 例子
public class ZkTest {

    public static void main(String[] args) throws Exception {
        Thread.sleep(30000);
        System.out.println("haha");
    }
}
2.jpg

说明:执行ZkTest的这个类的main方法的虚拟机进程ID为5884。


jstat工具:查看虚拟机运行信息

  1. 作用:监视虚拟机各种运行状态信息。可以监视本地以及远程的类装载、内存、垃圾收集、JIT编译等运行数据。如果我们没有使用可视化工具来定位虚拟机性能和故障,可以使用jstat工具。
  2. jstat命令的格式
    jstat [ option vmid [ interval [ s | ms ] [ count ] ] ]
    注意:
    如果我们排查的是本地虚拟机进程,VMID和LVMID是一样的。interval表示查询间隔,count表示查询次数。
    例子:
    如果我们想每200毫秒,一共10次,查看监视类装载、卸载数量、总空间以及类装载所耗费的时间信息。
jstat -class 5884 200 10
  1. jstat命令参数


    3.jpg
  2. 例子:

显示类加载的信息

[root@sunpyServer /]# jstat -class 5733
Loaded  Bytes  Unloaded  Bytes     Time   
  7932 14977.5      136   201.6       7.29

说明:
Loaded:加载class的数量为7932 个。
Bytes:加载所占用的空间大小14977.5字节。
Unloaded:未加载class的数量为136个。
Bytes:未加载占用的空间大小201.6字节。
Time:类装载耗费的时间7.29毫秒。
显示垃圾收集信息

[root@sunpyServer /]# jstat -gcutil 5733
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT   
  0.00   0.00  20.93  57.12  97.06  92.86    244    1.428    43    4.974    6.403

说明:
S0:Survivor区,表示Survivor0占0.00%。
S1:Survivor区,表示Survivor1占0.00%。
E:新生代Eden区(E,表示Eden)使用了20.93%的空间。
O:老年代(O,表示Old)使用了57.12%。
M:元空间(M,表示Metaspace)使用了97.06%。
CCS:压缩使用比例92.86%。
YGC:Young GC 244次。
YGCT:Young GC总共耗时1.428秒。
FGC:Full GC 43次。
FGCT:Full GC共耗时为4.974秒。
GCT:所有GC总耗时6.403秒。


jmap工具:java内存映像工具

  1. 作用:用于生成堆转储快照、它还可以查询finalize执行队列、java堆和永久代的详细信息(如空间使用率、当前用的哪种收集器)。
  2. jmap命令的格式
jmap 【option】vmid
  1. jmap命令参数


    6.jpg

jstack工具:java堆栈跟踪工具

  1. 作用:生成虚拟机当前时刻的线程快照(threaddump或者javacore文件)。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目得是定位线程出现长时间停顿的原因。譬如:线程间死锁、死循环、请求外部资源导致的长时间等待等都是导致线程长时间停顿的常见原因。
  2. jstack命令格式:
jstack【option】vmid
  1. jstack命令参数:


    7.jpg
  2. 例子
D:\Java\java_123\jdk\bin>jstack 5216
2018-09-09 21:05:26
Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.51-b03 mixed mode):

"Service Thread" daemon prio=6 tid=0x000000000e595800 nid=0xdd4 runnable [0x0000
000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread1" daemon prio=10 tid=0x000000000e593800 nid=0x6a8 waiting on
condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" daemon prio=10 tid=0x000000000cdce800 nid=0x1ad4 waiting on
 condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Attach Listener" daemon prio=10 tid=0x000000000cdcd800 nid=0x1b74 waiting on co
ndition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" daemon prio=10 tid=0x000000000cdc6800 nid=0xf54 runnable [0x
0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" daemon prio=8 tid=0x000000000cd57000 nid=0x7c8 in Object.wait() [0x0
00000000e02f000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x00000007c1705568> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
        - locked <0x00000007c1705568> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:189)

"Reference Handler" daemon prio=10 tid=0x000000000cd4e000 nid=0x1084 in Object.w
ait() [0x000000000de6e000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x00000007c17050f0> (a java.lang.ref.Reference$Lock)
        at java.lang.Object.wait(Object.java:503)
        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133)
        - locked <0x00000007c17050f0> (a java.lang.ref.Reference$Lock)

"main" prio=6 tid=0x000000000212f800 nid=0xf98 waiting on condition [0x000000000
23ff000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
        at java.lang.Thread.sleep(Native Method)
        at spring_enterprise.ZkTest.main(ZkTest.java:11)

"VM Thread" prio=10 tid=0x000000000cd4a000 nid=0x1728 runnable

"GC task thread#0 (ParallelGC)" prio=6 tid=0x000000000202d800 nid=0x2f0 runnable


"GC task thread#1 (ParallelGC)" prio=6 tid=0x000000000202f800 nid=0x7f0 runnable


"GC task thread#2 (ParallelGC)" prio=6 tid=0x0000000002031000 nid=0x18cc runnabl
e

"GC task thread#3 (ParallelGC)" prio=6 tid=0x0000000002033000 nid=0x1a88 runnabl
e

"VM Periodic Task Thread" prio=10 tid=0x000000000e5b0000 nid=0x1880 waiting on c
ondition

JNI global references: 109

说明:从上面的信息可以看出main中waiting on condition情况,该main方法中调用sleep,线程在进行睡眠,在ZkTest的11行代码,并且调用本地方法java.lang.Thread.sleep。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容

  • 声明:原创文章,转载请注明出处。http://www.jianshu.com/u/e02df63eaa87 1、L...
    唐影若凡阅读 3,592评论 0 11
  • 作者:一字马胡 转载标志 【2017-11-12】 更新日志 日期更新内容备注 2017-11-12新建文章初版 ...
    beneke阅读 2,165评论 0 7
  • 我来自山东淄博四十亩地小学二年级二班,我是一个特别爱读书的小男孩,我的另一大喜好就是画画。在参与【班班有读】...
    肖萍_fb74阅读 535评论 0 2
  • 将下面的代码放入index.ios.js 文件中预览就可以看到你想要的了 importReact,{Compone...
    mindasiy阅读 619评论 0 1
  • 慢慢喜 我很快就喜欢你,也好不容易让你慢慢喜欢我。 我向来不太擅长用太欢乐的语气来写关于自己的东西,这也是为什么我...
    霜酱酱阅读 166评论 2 1