JVM运行命令

117 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第33天,点击查看活动详情

jps

jps(Java Process Statu):显示指定系统内所有的 HotSpot 虚拟机进程(查看虚拟机进程信息),可用于查询正在运行的虚拟机进程,进程的本地虚拟机 ID 与操作系统的进程 ID 是一致的,是唯一的

使用语法:jps [options] [hostid]

options 参数:

  • -q:仅仅显示 LVMID(local virtual machine id),即本地虚拟机唯一 id,不显示主类的名称等
  • -l:输出应用程序主类的全类名或如果进程执行的是 jar 包,则输出 jar 完整路径
  • -m:输出虚拟机进程启动时传递给主类 main()的参数
  • -v:列出虚拟机进程启动时的JVM参数,比如 -Xms20m -Xmx50m是启动程序指定的 jvm 参数

ostid 参数:RMI注册表中注册的主机名,如果想要远程监控主机上的 java 程序,需要安装 jstatd

jstat

jstat(JVM Statistics Monitoring Tool):用于监视 JVM 各种运行状态信息的命令行工具,可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,在没有 GUI 的图形界面,只提供了纯文本控制台环境的服务器上,它是运行期定位虚拟机性能问题的首选工具,常用于检测垃圾回收问题以及内存泄漏问题

使用语法:jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

查看命令相关参数:jstat-h 或 jstat-help

  • vmid 是进程 id 号

  • option 参数:

    类装载相关:

    • -class:显示 ClassLoader 的相关信息,类的装载、卸载数量、总空间、类装载所消耗的时间等

    垃圾回收相关:

    • -gc:显示与GC相关的堆信息,年轻代、老年代、永久代等的容量、已用空间、GC时间合计等信息
    • -gccapacity:显示内容与 -gc 基本相同,但输出主要关注 Java 堆各个区域使用到的最大、最小空间
    • -gcutil:显示内容与 -gc 基本相同,但输出主要关注已使用空间占总空间的百分比
    • -gccause:与 -gcutil 功能一样,但是会额外输出导致最后一次或当前正在发生的 GC 产生的原因
    • -gcnew:显示新生代 GC 状况
    • -gcnewcapacity:显示内容与 -gcnew 基本相同,输出主要关注使用到的最大、最小空间
    • -geold:显示老年代 GC 状况
    • -gcoldcapacity:显示内容与 -gcold 基本相同,输出主要关注使用到的最大、最小空间
    • -gcpermcapacity:显示永久代使用到的最大、最小空间

    JIT 相关:

    • -compiler:显示 JIT 编译器编译过的方法、耗时等信息
    • -printcompilation:输出已经被 JIT 编译的方法

jinfo

jinfo(Configuration Info for Java):查看虚拟机配置参数信息,也可用于调整虚拟机的配置参数,开发人员可以很方便地找到 Java 虚拟机参数的当前值

使用语法:jinfo [options] pid

options 参数:

  • no option:输出全部的参数和系统属性
  • -flag name:输出对应名称的参数
  • -flag [+-]name:开启或者关闭对应名称的参数 只有被标记为manageable的参数才可以被动态修改
  • -flag name=value:设定对应名称的参数
  • -flags:输出全部的参数
  • -sysprops:输出系统属性