jvm 常用命令

堆内存

image.png
  • jmap -heap pid


    image.png

图中重点信息讲述:默认的垃圾回收算法为Parallel GC ,共用了2个线程进行垃圾回收检查。堆相关信息的配置和使用率。
要注意的是在使用CMS GC 情况下,jmap -heap的执行有可能会导致JAVA 进程挂起

  • jmap -histo pid > jmaptemp.log


    image.png

使用jmap -histo[:live] pid查看堆内存中的对象数目、大小统计直方图。如果带上live则只统计活对象,jvm进行Full GC 后,进行统计。
class name是对象类型,说明如下:

B  byte
C  char
D  double
F  float
I  int
J  long
Z  boolean
[  数组,如[I表示int[]
[L+类名 其他对象
  • jmap -dump:format=b,file=文件名 [pid]
    导出Dump文件,可以用相关工具(jhat/jvisualvm/mat)进行分析。-dump:live会触发Full GC后转存Dump。
    需要注意的是,上面的导出快照命令,在1G左右JVM内存的情况下,要大概等待1分钟左右的时间,且执行时会使JVM暂停执行,因此不要在正式运行系统的高峰期或关键时刻使用。

垃圾回收

  • jstat -gcutil pid


    image.png
  1. S0 — Heap上的 Survivor space 0 区已使用空间的百分比
  2. S1 — Heap上的 Survivor space 1 区已使用空间的百分比
  3. E — Heap上的 Eden space 区已使用空间的百分比
  4. O — Heap上的 Old space 区已使用空间的百分比
  5. P — Perm space 区已使用空间的百分比
  6. YGC — 从应用程序启动到采样时发生 Young GC 的次数
  7. YGCT– 从应用程序启动到采样时 Young GC 所用的时间(单位秒)
  8. FGC — 从应用程序启动到采样时发生 Full GC 的次数
  9. FGCT– 从应用程序启动到采样时 Full GC 所用的时间(单位秒)
  10. GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒)

进程监控

  • jstack pid > jstacktemp.log


    image.png
    1. 线程名称:http-bio-8091-exec-71
    2. 线程类型:daemon
    3. 优先级: 6,默认是5
    4. jvm线程id:tid=0x0000000012561000,jvm内部线程的唯一标识(通过java.lang.Thread.getId()获取,通常用自增方式实现。)
    5. 对应系统线程id(NativeThread ID):nid=0x343d0,和top命令查看的线程pid对应,不过一个是10进制,一个是16进制。(通过命令:top -H -p pid,可以查看该进程的所有线程信息)
    6. 线程状态:waiting on condition
    7. 起始栈地址:[0x000000001cd2f000]
    8. Java thread statck trace:是上面at行的信息。到目前为止这是最重要的数据,Java stack trace提供了大部分信息来精确定位问题根源。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • jvm原理 Java虚拟机是整个java平台的基石,是java技术实现硬件无关和操作系统无关的关键环节,是java...
    AI乔治阅读 17,310评论 21 486
  • 原文阅读 前言 这段时间懈怠了,罪过! 最近看到有同事也开始用上了微信公众号写博客了,挺好的~给他们点赞,这博客我...
    码农戏码阅读 6,027评论 2 31
  • JVM常用命令: jps 显示当前运行的java进程以及相关参数 jps参数: 备注:也可以使用ps aux | ...
    忘净空阅读 4,851评论 0 6
  • jstack主要用来查看某个Java进程内的线程堆栈信息。语法格式:jstack [option] pid; 命...
    Sanisy阅读 292评论 0 0
  • 第一章 简介 J2SE平台的一大优势是它的自动化内存管理,避免了开发者去面对内存管理的复杂性。 本文以Sun J2...
    tianyiliusha阅读 1,032评论 0 1