JVM命令详解

JVM命令

Java虚拟机(JVM)是Java程序运行的基础设施,它负责将Java字节码转换为本地机器代码并执行。在开发过程中,我们经常需要使用一些命令来监控和管理JVM的性能和状态。六个常用的JVM命令:jps、jstat、jmap、jhat、jstack、jinfo。

jps

jps 命令用于列出当前系统中所有正在运行的Java进程及其主类名。它可以帮助我们快速找到我们需要调试或监控的Java进程。

格式

jps [options] [hostid]

option参数说明:

  • l : 输出主类全名或jar路径。
  • q : 只输出LVMID。
  • m : 输出JVM启动时传递给main()的参数。
  • v : 输出JVM启动时显示指定的JVM参数。

jstat

jstat 命令用于收集和报告关于Java虚拟机(JVM)的各种统计信息。这些信息可以帮助我们了解JVM的性能状况,例如垃圾回收情况、内存使用情况等。

格式

jstat 【options】 <PID> 【interval】 【count】

命令参数说明:

  • Options,一般使用gcutil 或 -gc 查看gc 情况pid。
  • pid,当前运行的 java进程号。
  • interval,间隔时间,单位为秒或者毫秒 。
  • count,打印次数,如果缺省则打印无数次。

options参数说明:

  • gc:统计 jdk gc时 heap信息,以使用空间字节数表示。
  • gcutil:统计 gc时, heap情况,以使用空间的百分比表示。
  • class:统计 class loader行为信息。
  • compile:统计编译行为信息。
  • gccapacity:统计不同 generations(新生代,老年代,持久代)的 heap容量情况。
  • gccause:统计引起 gc的事件。
  • gcnew:统计 gc时,新生代的情况。
  • gcnewcapacity:统计 gc时,新生代 heap容量。
  • gcold:统计 gc时,老年代的情况。
  • gcoldcapacity:统计 gc时,老年代 heap容量。
  • gcpermcapacity:统计 gc时, permanent区 heap容量。

jmap

jmap命令用于生成Java堆内存快照文件(heap dump)。这些文件可以用于分析内存泄漏问题,或者进行性能调优。

格式

jmap 【options】 <pid>

options参数说明 :

  • no options 如果使用不带选项参数的jmap打印共享对象映射, 将会打印目标虚拟机中加载的每个对象的起始地址、映射大小及共享对象文件的路径全称。(很占资源, 一般不会使用)。
  • heap:打印java heap 摘要。
  • histo[:live] :打印堆中的java对象统计信息。
  • clstats :打印类加载器统计信息。
  • finalizerinfo:打印在f-queue中等待执行finalizer方法的对象。
  • dump:生成java堆的dump文件, dump-options:
    • live :只转储存活的对象,如果没有指定则转储所有对象。
    • format=b:二进制格式。
    • file=[Path] :将文件转储到指定文件中。

jhat

jhat 用来分析jmap生成dump文件的命令, jhat内置了应用服务器,可以通过网页查看dump文件分析结果,jhat一般用于离线分析。

格式

jhap 【options】 【dumpfile】

option参数说明:

  • stack false :关闭对象分配调用堆栈的跟踪。
  • refs false:关闭对象引用的跟踪。
  • port:HTTP服务器端口, 默认是7000。
  • debug:debug级别。
  • version:分析报告版本。

jstack

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

如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。

另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。

格式

jstack 【options】 【pid】

options参数说明:

  • F :当使用jstack无响应时,强制输出线程堆栈。
  • m:同时输出java堆栈和c/c++ 堆栈信息。
  • l :除了输出堆栈信息外, 显示关于锁的附加信息。

jinfo

jinfo命令用于显示Java虚拟机(JVM)的配置信息,包括系统属性、Java版本、可用的JVM选项等。这可以帮助我们了解JVM的配置和使用情况。

格式

jinfo 【options】 <pid>

options参数说明:

  • no options :输出所有的系统属性和参数。
  • flag :打印指定名称的参数。
  • flag [+|-] :打开或关闭参数。
  • flag = 设置参数值。
  • flags 打印所有参数。
  • sysprops 打印系统配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小马爱打代码

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

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

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

打赏作者

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

抵扣说明:

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

余额充值