4、JVM-虚拟机工具

JVM虚拟机工具官方文档:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/toc.html

目录

jps:虚拟机进程状态工具

jstat:虚拟机统计信息监视工具

jinfo:Java配置信息工具

jmap:Java内存映像工具

jhat:虚拟机堆转储快照分析工具

jstack:Java堆栈跟踪工具

JConsole:Java监视与管理控制台

VisualVM:多合一故障处理工具


  • jps:虚拟机进程状态工具

  • jstat:虚拟机统计信息监视工具

  • jinfo:Java配置信息工具

  • jmap:Java内存映像工具

  • jhat:虚拟机堆转储快照分析工具

  • jstack:Java堆栈跟踪工具

  • HSDIS:JIT生成代码反汇编

  • JConsole:Java监视与管理控制台

  • VisualVM:多合一故障处理工具


jps:虚拟机进程状态工具

  • 作用:

    • 可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(main()方法所在的类)的类名以及这些进程的本地虚拟机唯一ID(Local Virtual Machine Identifier),简称LVMID。

  • 命令:

    • 语法:

      • jps [ options ] [ hostid ]

    • 示例:

      • jps -l

    • 参数:

选项作用
-q只显示LVMID,省略主类的名称
-m显示虚拟机进程启动时给主类main()方法的参数
-l显示主类的全名,如果进程执行的是Jar包就像是Jar路径
-v显示虚拟机进程启动时JVM参数

jstat:虚拟机统计信息监视工具

  • 作用:

    • 显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,在没有GUI图形界面,只提供了纯文本控制台环境的服务器上,它将是运行期定位虚拟机性能问题的首选工具。

  • 命令:

    • 语法:

      • jstat [ option vmid [interval[s|ms] [count]] ]

    • 语法参数说明:

      • vmid:如果是本地虚拟机进程,vmid与lvmid是一致的,如果是远程虚拟机进程,vmid的格式应为:[protocol:][//]lvmid[@hostname[:port]/servername],说明:[协议:][//]lvmid[@IP地址[:端口]/服务名称]

      • interval 和 count:分别表示查询间隔(单位毫秒)和查询次数,如果省略这两个参数,说明只查询一次。示例假设需要没250毫秒查询一次进程2222垃圾收集情况,一共查询20次,那命令语法应该是:jstat -gc 2222 250 20

      • option选项:具体详细参数说明请访问官网 https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html
选项作用
 -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编译的方法


jinfo:Java配置信息工具

  • 作用

    • 实时的查看和调整虚拟机各项参数(程序运行期间查看和修改参数)

  • 命令

    • 语法:

      • jinfo [ option ] pid 

    • 示例:

      • 查询CMSInitiationgOccupancyFraction参数值

        • jinfo -flag CMSInitiationgOccupancyFraction 2222

    • option选项:

选项作用
 -flag name pid打印指定name的虚拟机参数值,示例:-flag CMSInitiatingOccupancyFraction 2222
 -flag [+|-]name pid启用或禁用指定的布尔参数,示例:-flag +PrintGCDetails 2222
 -flag name=value将指定的name参数设置为指定的值
 -flags打印传递给JVM的参数
 -sysprops将Java系统属性打印为名称 - 值对
  

jmap:Java内存映像工具

  • 作用

    • 用于生成转储快照(一般称为heappdump或dump文件)。还有查询finalize执行队列、Java堆和永久代的详细信息,如空间使用率、当前使用的是哪种收集器等。

  • 命令

    • 语法:

      • jmap [ option ] vmid

      • option选项:

        选项作用
         -dump生成Java堆转储快照。格式为:-dump:[live,]format=b,file=<path\filename>,其中live子参数说明是否只dump出存活的对象
         -finalizerinfo显示在F-Queue中等待Finalizer线程执行finalize方法的对象。只在linux/solaris平台下有效
         -heap显示Java堆详细信息,如使用哪种回收器、参数配置、分代状况等。只在linux/solaris平台下有效
         -histo显示堆中对象统计信息、包括类、实例数量、合计数量
         -permstat以ClassLoader为统计口径显示永久代内存状态。只在linux/solaris平台下有效
         -F当虚拟机进程堆-dump选项没有响应时,可使用这个选项强制生成dump快照。只在linux/solaris平台下有效

         

      • 示例:

        • jmap -dump:format=b,file=d:\lixun.bin 2222


jhat:虚拟机堆转储快照分析工具

  • 作用

    • jhat命令与jmap搭配使用,来分析jmap生成的堆转储快照。jhat内置了一个微型的HTML服务器,生成dump文件的分析结果后,可以在浏览器中查看。不建议使用jhat命令分析堆转储快照,一是耗时和大量消耗硬件资源,二是jhat的分析功能相对来说比较简陋。推荐几款分析工具,Eclipse Memory Analyzer、IBM HeapAnalyzer(用于分析IBM J9虚拟机生成的快照文件)、JProfile。

  • 命令

    • 语法:

      • jhat 快照文件

    • 示例:

      • jhat lixun.bin


jstack:Java堆栈跟踪工具

  • 作用

    • 生成虚拟机当前时刻的线程快照(一般称为threaddump或者javacore文件)。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程死锁、死循环、请求外部资源导致的长时间等待都是导致线程长时间停顿的常见原因。线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做些什么事情,或者等待什么资源。

  • 命令

    • 语法:

      • jstack [ option ] vmid

    • 示例:

      • jstack -l 2222

    • option参数:

选项作用
 -F当正常输出的请求不被响应时,强制输出线程堆栈
 -l除堆栈外,显示关于锁的附加信息
 -m如果调用到本地方法的话,可以显示C/C++的堆栈

JConsole:Java监视与管理控制台

虚拟机可视化监控工具。


VisualVM:多合一故障处理工具

上面所有命令工具的集合体。(推荐使用)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

又逢乱世

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值