资讯专栏INFORMATION COLUMN

JVM常用命令

IT那活儿 / 436人阅读
JVM常用命令

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!! 


  
前置启动程序:
事先启动一个web应用程序,用jps查看其进程id,接着用各种jdk自带命令优化。



Jmap

此命令可以用来查看内存信息,实例个数以及占用内存大小。
打开log.txt,文件内容如下:
  • num:序号
  • instances:实例数量
  • bytes:占用空间大小
  • class name:类名称,[C is a char[],[S is a short[],[I is a int[],[B is a byte[],[[I is a int[][]
堆信息:
堆内存dump:

也可以设置内存溢出自动导出dump文件(内存很大的时候,可能会导不出来)

  • -XX:+HeapDumpOnOutOfMemoryError

  • -XX:HeapDumpPath=./ (路径)

示例代码
可以用jvisualvm命令工具导入该dump文件分析。


Jstack

用jstack加进程id查找死锁,见如下示例:
  • Thread-1" 线程名
  • prio=5 优先级=5
  • tid=0x000000001fa9e000 线程id
  • nid=0x2d64 线程对应的本地线程标识nid
  • java.lang.Thread.State: BLOCKED 线程状态
jstack找出占用cpu最高的线程堆栈信息:
1)使用命令top -p ,显示你的java进程的内存情况,pid是你的java进程号,比如19663:
2)按H,获取每个线程的内存情况:
3)找到内存和cpu占用最高的线程tid,比如19664。
4)转为十六进制得到 0x4cd0,此为线程id的十六进制表示。
5)执行 jstack 19663|grep -A 10 4cd0,得到线程堆栈信息中 4cd0 这个线程所在行的后面10行,从堆栈中可以发现导致cpu飙高的调用方法。


Jinfo

查看正在运行的Java应用程序的扩展参数
  • 查看jvm的参数:
  • 查看java系统参数:


Jstat

4.1 jstat -gc pid 最常用,可以评估程序内存使用及GC压力整体情况。

  • S0C:第一个幸存区的大小,单位KB
  • S1C:第二个幸存区的大小
  • S0U:第一个幸存区的使用大小S1U:第二个幸存区的使用大小
  • EC:伊甸园区的大小
  • EU:伊甸园区的使用大小
  • OC:老年代大小
  • OU:老年代使用大小
  • MC:方法区大小(元空间)
  • MU:方法区使用大小
  • CCSC:压缩类空间大小
  • CCSU:压缩类空间使用大小
  • YGC:年轻代垃圾回收次数
  • YGCT:年轻代垃圾回收消耗时间,单位s
  • FGC:老年代垃圾回收次数
  • FGCT:老年代垃圾回收消耗时间,单位s
  • GCT:垃圾回收消耗总时间,单位s

4.2 新生代垃圾回收统计

  • S0C:第一个幸存区的大小
  • S1C:第二个幸存区的大小
  • S0U:第一个幸存区的使用大小
  • S1U:第二个幸存区的使用大小
  • TT:对象在新生代存活的次数
  • MTT:对象在新生代存活的最大次数
  • DSS:期望的幸存区大小
  • EC:伊甸园区的大小
  • EU:伊甸园区的使用大小
  • YGC:年轻代垃圾回收次数
  • YGCT:年轻代垃圾回收消耗时间

4.3 新生代内存统计

  • NGCMN:新生代最小容量
  • NGCMX:新生代最大容量
  • NGC:当前新生代容量
  • S0CMX:最大幸存1区大小
  • S0C:当前幸存1区大小
  • S1CMX:最大幸存2区大小
  • S1C:当前幸存2区大小
  • ECMX:最大伊甸园区大小
  • EC:当前伊甸园区大小
  • YGC:年轻代垃圾回收次数
  • FGC:老年代回收次数

4.4 老年代垃圾回收统计

  • MC:方法区大小
  • MU:方法区使用大小
  • CCSC:压缩类空间大小
  • CCSU:压缩类空间使用大小
  • OC:老年代大小
  • OU:老年代使用大小
  • YGC:年轻代垃圾回收次数
  • FGC:老年代垃圾回收次数
  • FGCT:老年代垃圾回收消耗时间
  • GCT:垃圾回收消耗总时间
4.5 老年代内存统计
  • OGCMN:老年代最小容量
  • OGCMX:老年代最大容量
  • OGC:当前老年代大小
  • OC:老年代大小
  • YGC:年轻代垃圾回收次数
  • FGC:老年代垃圾回收次数
  • FGCT:老年代垃圾回收消耗时间
  • GCT:垃圾回收消耗总时间
4.6 元数据空间统计

  • MCMN:最小元数据容量
  • MCMX:最大元数据容量
  • MC:当前元数据空间大小
  • CCSMN:最小压缩类空间大小
  • CCSMX:最大压缩类空间大小
  • CCSC:当前压缩类空间大小
  • YGC:年轻代垃圾回收次数
  • FGC:老年代垃圾回收次数
  • FGCT:老年代垃圾回收消耗时间
  • GCT:垃圾回收消耗总时间

本文作者:牛 森(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129292.html

相关文章

  • 面试官问我JVM调优,我忍不住了!

    面试官:今天要不来聊聊JVM调优相关的吧?面试官:你曾经在生产环境下有过调优JVM的经历吗?候选者:没有面试官:...候选者:嗯...是这样的,我们一般优化系统的思路是这样的候选者:1. 一般来说关系型数据库是先到瓶颈,首先排查是否为数据库的问题候选者:(这个过程中就需要评估自己建的索引是否合理、是否需要引入分布式缓存、是否需要分库分表等等)候选者:2. 然后,我们会考虑是否需要扩容(横向和纵向都...

    不知名网友 评论0 收藏0
  • JVM调优前戏之JDK命令行工具---jhat

    摘要:在的命令行中,一般开发人员最耳熟能详的肯定就是等常用命令,不过在下还有许多其他的命令行工具,它们被用来监测运行时的状态,下面我们来详细解读一下几个常用的工具以及如何使用。 在JDK的命令行中,一般开发人员最耳熟能详的肯定就是java,javac,javap等常用命令,不过在jdk/bin下还有许多其他的命令行工具,它们被用来监测JVM运行时的状态,下面我们来详细解读一下几个常用的工具以...

    RiverLi 评论0 收藏0
  • 第01部分_Introduction

    摘要:由硬件和软件所组成,没有安装任何软件的计算机称为裸机。计算机的硬件是指计算机系统中由电子,机械和光电元件等组成的各种物理装置的总称。计算机软件数据和指令的集合,分为系统软件和应用软件。提供了程序运行的环境核心类库。 一、计算机基础 1. 计算机 全称为电子计算机,俗称电脑。 是一种能够按照程序运行,自动且高速地处理海量数据的现代化智能电子设备。 由硬件和软件所组成,没有安装任何软件的...

    wemall 评论0 收藏0
  • JVM调优前戏之JDK命令行工具---jstack

    摘要:用于生成虚拟机当前时刻的线程快照。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的就是定位线程出现长时间停顿的原因,如线程死锁死循环请求外部资源导致的长时间等待等都是导致线程长时间停顿的常见原因。 在JDK的命令行中,一般开发人员最耳熟能详的肯定就是java,javac,javap等常用命令,不过在jdk/bin下还有许多其他的命令行工具,它们被用来监...

    Cristic 评论0 收藏0
  • Java面试 32个核心必考点完全解析

    摘要:如问到是否使用某框架,实际是是问该框架的使用场景,有什么特点,和同类可框架对比一系列的问题。这两个方向的区分点在于工作方向的侧重点不同。 [TOC] 这是一份来自哔哩哔哩的Java面试Java面试 32个核心必考点完全解析(完) 课程预习 1.1 课程内容分为三个模块 基础模块: 技术岗位与面试 计算机基础 JVM原理 多线程 设计模式 数据结构与算法 应用模块: 常用工具集 ...

    JiaXinYi 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<