JVM 常见命令行监控工具

1. jps:查看正在运行的 java 进程

  • 语法:jps [-q] [-mlvV] [<hostid>]
    • -q:仅仅显示LVMID,既本地虚拟机i唯一id,不显示主类名称
    • -l:输出应用程序主类的全类名,如果进程执行的是 jar 包,则输出jar 包完整路径
    • -m:输出虚拟机进程启动时传递给主类 main() 的参数
    • -v:列出虚拟机进程启动时的 JVM 参数。比如 -Xms20m -Xmx50m 是启动程序指定的 JVM 参数
    • hostid:hostname:port,主机名:端口号,远程连接,需要安装 jstatd

2.jstat:查看 JVM 统计信息

  • 语法:jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
    • -<option>
      • -class:查看所有加载的类型的数量,占用内存,卸载的类型数量,卸载的类型占用内存,花费的总体时间
      • -compiler:查看 JIT 编译数量,失败数量,无效数量,编译总耗时,失败类型,失败方法
      • -gc:显示与 GC 相关的堆信息,包括 Eden 区、两个 Survivor 区,老年代,方法区等的容量,已用空间,GC 时间合计等信息
      • -gccapacity:除 -gc 显示的内容外,还包括各个区域使用到的最大、最小空间
      • -gcutil:除 -gc 显示的内容外,还输出已使用空间占总空间的百分比
      • -gccause:除 -gcutil 显示的内容外,额外输出导致最后一次或当前正在发生的 GC 产生的原因
    • -t:程序运行的总时间
    • interval:周期性每隔 interval 毫秒打印一次 jstat 信息,如:jstat -class 11111 1000,每隔1 秒打印一次 jstat 信息
    • count:搭配 interval,代表只打印指定次数

3. jinfo:查看虚拟机配置参数信息,也可用于调整虚拟机参数配置

  • 语法:jinfo [option] <pid>
    • option:查看或修改 jvm 参数,系统属性信息,注意只能修改被标记为 manageable 的参数
      • no option 输出全部参数和系统属性
      • -flag name:输出对应名称的参
      • -flag [+-]name:开启或关闭对应名称和参数
      • -flag name=value:设置对应名称的参数
      • -flags:输出全部参数
      • -sysprops:输出系统属性

4. jmap:导出内存映像文件和内存使用情况

  • 语法:jmap [option] <pid>
    • option:
      • -dump:生成 dump 文件
      • -heap:输出整个堆空间详细信息,包括 GC 使用,堆配置信息,以及内存使用情况
      • -histo:输出对重对象统计信息,包括类、实例数量和合计容量

5. jstack:输出 JVM 中线程快照

  • 语法:jstack [option] <pid>
  • option:
    • -F:当正常输出的请求不被响应时,强制输出线程堆栈
    • -m:如果调用到本地方法的话,可以显示 C/C++ 的堆栈
    • -l:除堆栈外,显示关于锁的附加信息
  • 在 thread dump 中,留意以下几种状态
    • 死锁,Deadlock(重点关注)
    • 等待资源,waiting on condition (重点关注)
    • 等待获取监视器,waiting on monitor entry (重点关注)
    • 阻塞,Blocked (重点关注)
    • 执行中, Runnable
    • 暂停,Suspended
    • 对象等待中,Object.wait() 或 TIMED_WAITING
    • 停止,Parked

 

posted @ 2021-08-01 19:13  programmLover  阅读(62)  评论(0编辑  收藏  举报