深入拆解Java虚拟机
郑雨迪
Oracle 高级研究员,计算机博士
立即订阅
27947 人已学习
课程目录
已完结 39 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 为什么我们要学习Java虚拟机?
免费
模块一:Java虚拟机基本原理 (12讲)
01 | Java代码是怎么运行的?
02 | Java的基本类型
03 | Java虚拟机是如何加载Java类的?
04 | JVM是如何执行方法调用的?(上)
05 | JVM是如何执行方法调用的?(下)
06 | JVM是如何处理异常的?
07 | JVM是如何实现反射的?
08 | JVM是怎么实现invokedynamic的?(上)
09 | JVM是怎么实现invokedynamic的?(下)
10 | Java对象的内存布局
11 | 垃圾回收(上)
12 | 垃圾回收(下)
模块二:高效编译 (12讲)
【工具篇】 常用工具介绍
13 | Java内存模型
14 | Java虚拟机是怎么实现synchronized的?
15 | Java语法糖与Java编译器
16 | 即时编译(上)
17 | 即时编译(下)
18 | 即时编译器的中间表达形式
19 | Java字节码(基础篇)
20 | 方法内联(上)
21 | 方法内联(下)
22 | HotSpot虚拟机的intrinsic
23 | 逃逸分析
模块三:代码优化 (10讲)
24 | 字段访问相关优化
25 | 循环优化
26 | 向量化
27 | 注解处理器
28 | 基准测试框架JMH(上)
29 | 基准测试框架JMH(下)
30 | Java虚拟机的监控及诊断工具(命令行篇)
31 | Java虚拟机的监控及诊断工具(GUI篇)
32 | JNI的运行机制
33 | Java Agent与字节码注入
模块四:黑科技 (3讲)
34 | Graal:用Java编译Java
35 | Truffle:语言实现框架
36 | SubstrateVM:AOT编译框架
尾声 (1讲)
尾声 | 道阻且长,努力加餐
深入拆解Java虚拟机
登录|注册

30 | Java虚拟机的监控及诊断工具(命令行篇)

郑雨迪 2018-09-28
今天,我们来一起了解一下 JDK 中用于监控及诊断工具。本篇中我将使用刚刚发布的 Java 11 版本的工具进行示范。

jps

你可能用过ps命令,打印所有正在运行的进程的相关信息。JDK 中的jps命令(帮助文档)沿用了同样的概念:它将打印所有正在运行的 Java 进程的相关信息。
在默认情况下,jps的输出信息包括 Java 进程的进程 ID 以及主类名。我们还可以通过追加参数,来打印额外的信息。例如,-l将打印模块名以及包名;-v将打印传递给 Java 虚拟机的参数(如-XX:+UnlockExperimentalVMOptions -XX:+UseZGC);-m将打印传递给主类的参数。
具体的示例如下所示:
$ jps -mlv
18331 org.example.Foo Hello World
18332 jdk.jcmd/sun.tools.jps.Jps -mlv -Dapplication.home=/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home -Xms8m -Djdk.module.main=jdk.jcmd
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《深入拆解Java虚拟机》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(18)

  • 杨晓峰
    jmc早openjdk网站单独下载,目前需要7 ea版处理jdk11
    http://jdk.java.net/jmc/

    作者回复: 谢谢峰哥!

    2018-09-30
    8
  • 田斌
    Jstack -F会导致Java进程一直挂起吗,说是jdk的bug,什么情况下会一直挂起呢
    2018-11-08
    4
  • 美滋滋
    null那位朋友 oom killer了解一下
    2018-10-10
    3
  • null
    老师, 你好
    我想请教一个问题,
    我们线上环境有一台tomcat偶尔会莫名的挂掉,
    而且没有任何错误信息,日志都是正常的,
    就像被kill -9一样。
    请问这个怎么排查问题?
    不会是人为的。
    谢谢。
    2018-09-28
    3
  • Geek_987169
    老师为什么官方文档介绍工具开头都有"This command is experimental and unsupported"这句话?

    作者回复: 翻译过来就是”我们不对结果负责” ;)

    2018-11-04
    2
  • godtrue
    嘿嘿,就喜欢这样的简单拿来主义,随学随用。老师能否深入讲一下这些命令的底层实现,对应的信息都是怎么获取到的?都是从哪里获取到的?如果说都是从JVM中感觉范围有点大,往细了讲是从JVM的什么地方获取的呢?

    作者回复: 记得很多是通过MXBeans的。然后JVM有个专门存放perf data的,JVM组件会将东西存在那,而jstat会从那里读取。

    实现起来不复杂的,可以参考一下工具的源代码
    https://hg.openjdk.java.net/jdk/jdk11/file/1ddf9a99e4ad/src/jdk.jcmd/share/classes/sun/tools

    2018-09-28
    1
  • 随心而至
    linux 下man 对应的command,结合老师给的文档,都会用了
    2019-10-30
  • Geek_c991f2
    如果某个服务启动后,发现cpu使用率很高,这种问题怎么找出问题
    2019-10-08
  • Roway
    老师, 您好!
    我想请教一个问题,我们线上环境有一台tomcat偶尔会莫名的挂掉,
    而且没有任何错误信息(tomcat bin目录下生成了文件hs_err_pid20894.log),日志都是正常的,就像被kill -9一样。
    请问这个怎么排查问题?
    不会是人为的。
    谢谢。
    2019-06-26
  • believe me
    老师,为什么我用jstat命令查看:发现S0C和S1C的大小不一样,JDK版本是1.7
    2019-06-19
  • 子不语
    老师,咨询个问题,我通过jinfo -flag +PrintGC PID jinfo -flag +PrintGCDetails PID,没办法指定路径,gc日志输出在哪里的,找不到。
    2019-06-13
  • 秋天
    jps将打印所有正在运行的 Java 进程。 jstat允许...
    2019-06-05
  • Warren
    我在使用jfr后发现method profiling为空,请问知道怎么解决吗
    2019-05-15
  • witluo
    为什么没有Gcplot,一般参数调整,有计算公式么?这个可以根据自己的业务流量和现有服务进行动态调整。
    动态调整原则:调整理论合适值,再压测,将产生的gc.og,得出图形报表进行进一步分析,调整再压测,得出相对优参数值!
    (个人意见)
    2019-04-08
  • 啸风
    最近在分析was的JVM运行情况,好像没有jstack,和jmap,用的是javacore和heapdump分析,但用的不熟练,老师能否给适当的指导说明?
    2019-03-19
    1
  • 杨春鹏
    为什么我双击这些.exe,直接就闪退。

    作者回复: 都是命令行程序,没有GUI界面的

    2018-10-11
  • Douglas
    老师讲的好像和jdk11 没啥关系吧

    作者回复: 嗯,以前版本都有这些工具。

    只不过我使用了JDK11版本的这些工具,这句”注意”是用来避免结果有出入的。

    2018-09-28
    1
  • Axis
    Jdk11下开源了jfr但是没有jmc这个工具查看性能文件 是为什么?

    作者回复: 怎么说呢,大佬们决定JMC应该另外下载。我揣测是为了减少JDK的编译时间,不确定哈

    2018-09-28
收起评论
18
返回
顶部