查看原文
其他

深入理解Java虚拟机(四): 虚拟机性能监控

老王和小杨 Java学习之道 2021-12-16

点击上方"淼淼之森",选择"关注"公众号

优秀文章,第一时间收到!

KS

Knowledge Sharing

知识分享

    现在是资源共享的时代,同样也是知识分享的时代,如果你觉得本文有用,希望你能将它分享,让更多的人看到。

推荐阅读

1、神站推荐

2、资源汇总整理分享

3、好用的Chrome插件推荐

4、设计模式精炼: 汇总篇

虚拟机性能监控

JDK命令行工具

jps(JVM Proccess Status Tool)

  • 显示指定系统内所有HotSpot虚拟机进程

  • 参数

  • -q 只输出LVMID(Local Virtual Machine Identifier),省略主类名

  • -m 输出虚拟机进程启动时传递给主类main()函数的参数

  • -l 输出全路径名,如果是jar则输出jar的全路径

  • -v 输出虚拟机进程启动时JVM参数

jstat(JVM Statistics Monitoring Tool)

  • 收集HotSpot虚拟机各方面的运行数据

  • 命令格式:

   jstat [option vmid [interval[s|ms] [count]]
  • option:用户想要查询的虚拟机信息

    • -class 监视类装载、卸载数量、总空间及类装载耗时

    • -gc 监控Java堆状况,包括eden、survivor、老年代、永久代等容量、已用空间、GC时间合计等信息

    • -gccapacity 与-gc差不多,但输出主要关注Java堆各个区域使用到的最大、最小空间

    • -gcutil 与-gc差不多,但输出主要关注已使用空间占总空间的百分比

    • -gccause 与-gcutil一样,但是会多输出导致上次GC的原因

    • -gcnew 监视新生代GC状况

    • -gcnewcapacity 与-gcnew差不多,但输出主要关注使用到的最大、最小空间

    • -gcold 监视老年代GC装快

    • -gcoldcapacity 与-gcold差不多,但输出主要关注使用到的最大、最小空间

    • -gcpermcapacity 输出永久代使用到的最大、最小空间

    • -compiler 输出JIT编译过的方法、耗时等信息

    • -printcompilation 输出已经被JIT编译的方法

  • VMID和LVMID的区别:如果是本地则两个一样;如果是远程虚拟机,则VMID为:

   [protocol:][//lvmid[@hostname[:port]/servername]
  • 例:假如每250ms查询一次进程2764的垃圾收集情况,一共查询20次,命令为:

   jstat -gc 2764 250 20

jinfo(Configuration Info for Java)

  • 显示虚拟机配置信息

  • 格式

jinfo [option] pid

jmap(Memory Map for Java)

  • 生成虚拟机的内存存储快照(heapdump文件)

  • 命令格式

jmap [option] pid
  • option参数

  • -dump 生成Java堆转储快照,格式为:-dump:[live,]format=b,file=

    ,其中live子参数说明是否只dump出存活的对象
  • -finalizerinfo 显示在F-Queue中等待Finalizer线程执行finalize方法,只在linux/Solaris平台下有效

  • -heap 显示Java堆详细信息,只在linux/Solaris平台下有效

  • -histo 显示堆中对象统计信息, 包括类、实例数量、合计容量

  • -permstat 以ClassLoader为统计口径显示永久代内存状态。只在linux/Solaris平台下有效

  • -F 当虚拟机进程对-dump选项没有响应时,可以使用这个强制生成。只在linux/Solaris平台下有效

jhat(JVM Heap Dump Browser)

  • 用于分析heapdump文件,它会建立一个HTTP/HTML服务器,让用户可以再浏览器上查看分析结果(耗时长,不推荐使用)

jstack(Stack Trace for Java)

  • 显示虚拟机线程快照

  • 命令格式

jstack [option] vmid
  • option 参数:

  • -F 当正常输出的请求不被响应时,强制输出线程堆栈

  • -l 除堆栈外,显示关于锁的附加信息

  • -m 如果调用到本地方法,可显示C/C++的堆栈

HSDIS:JIT生成代码反汇编

JDK可视化工具

==>>>JDK内置监控神器



-END-

关注公众号"淼淼之森";后台回复序号“4”获取超多精彩哦。

: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存