JVM | 命令行诊断与调优 jhsdb jmap jstat jps

2023-10-24 14:12

本文主要是介绍JVM | 命令行诊断与调优 jhsdb jmap jstat jps,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

jmap

查看堆使用情况

查看类列表,包含实例数、占用内存大小

生成jvm的堆转储快照dump文件

jstat

查看gc的信息,查看gc的次数,及时间

查看VM内存中三代(young/old/perm)对象的使用和占用大小

查看元数据空间统计

查看年轻代对象的信息

查看年轻代对象的信息及其占用量

查看老年代对象的信息

查看老年代对象的信息及其占用量

查看最近一次GC统计和原因

jps

查看当前运行中java的进程

查看进程启动时传递给main()的参数

查看进程启动时的JVM参数

部分报错情况

Cannot connect to core dump or remote debug server. Use jhsdb jmap instead

ERROR: ptrace(PTRACE_ATTACH, ..) failed for 30865: Operation not permitted...


jmap

查看堆使用情况

jmap -heap [pid]

查看类列表,包含实例数、占用内存大小

jmap -histo [pid]

如果带上live则只统计活对象:

jmap -histo:live [pid]

生成jvm的堆转储快照dump文件

jmap -dump:format=b,file=dumpFileName [pid]

jstat

查看JVM统计信息,类装载、内存、垃圾收集、JIT编译等运行数据。

jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

查看gc的信息,查看gc的次数,及时间

jstat -gc [pid]

信息说明:

  • S0C:    年轻代中第一个survivor(幸存区)的容量 (字节)
  • S1C:    年轻代中第二个survivor(幸存区)的容量 (字节)
  • S0U:    年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
  • S1U:    年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
  • EC:      年轻代中Eden的容量 (字节)
  • EU:      年轻代中Eden目前已使用空间 (字节)
  • OC:     老年代的容量 (字节)
  • OU:     老年代目前已使用空间 (字节)
  • MC:     metaspace(元空间)的容量 (字节)
  • MU:     metaspace(元空间)目前已使用空间 (字节)
  • CCSC:当前压缩类空间的容量 (字节)
  • CCSU:当前压缩类空间目前已使用空间 (字节)
  • YGC:  从应用程序启动到采样时年轻代中gc次数
  • YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
  • FGC:  从应用程序启动到采样时老年代(全gc)gc次数
  • FGCT:从应用程序启动到采样时老年代(全gc)gc所用时间(s)
  • GCT:  从应用程序启动到采样时gc用的总时间(s)

查看VM内存中三代(young/old/perm)对象的使用和占用大小

jstat -gccapacity [pid]

信息说明:

  • NGCMN: 年轻代(young)中初始化(最小)的大小(字节)
  • NGCMX: 年轻代(young)的最大容量 (字节)
  • NGC:      年轻代(young)中当前的容量 (字节)
  • S0C:       年轻代中第一个survivor(幸存区)的容量 (字节)
  • S1C:       年轻代中第二个survivor(幸存区)的容量 (字节)
  • EC:         年轻代中Eden的容量 (字节)
  • OGCMN:老年代中初始化(最小)的容量大小 (字节)
  • OGCMX:老年代的最大容量(字节)
  • OGC:     老年代当前新生成的容量 (字节)
  • OC:        老年代的容量 (字节)
  • MCMN:   metaspace(元空间)中初始化(最小)的大小 (字节)
  • MCMX:   metaspace(元空间)的最大容量 (字节)
  • MC:        metaspace(元空间)当前新生成的容量 (字节)
  • CCSMN:最小压缩类空间大小
  • CCSMX:最大压缩类空间大小
  • CCSC:   当前压缩类空间大小
  • YGC:     从应用程序启动到采样时年轻代中gc次数
  • FGC:     从应用程序启动到采样时老年代(全gc)gc次数

查看元数据空间统计

jstat -gcmetacapacity [pid]

 信息说明:

  • MCMN:  最小元数据容量
  • MCMX:  最大元数据容量
  • MC:       当前元数据空间大小
  • CCSMN:最小压缩类空间大小
  • CCSMX:最大压缩类空间大小
  • CCSC:   当前压缩类空间大小
  • YGC:     从应用程序启动到采样时年轻代中gc次数
  • FGC:     从应用程序启动到采样时老年代(全gc)gc次数
  • FGCT:   从应用程序启动到采样时老年代(全gc)gc所用时间(s)
  • GCT:     从应用程序启动到采样时gc用的总时间(s)

查看年轻代对象的信息

jstat -gcnew [pid]

信息说明:

  • S0C:   年轻代中第一个survivor(幸存区)的容量 (字节)
  • S1C:   年轻代中第二个survivor(幸存区)的容量 (字节)
  • S0U:   年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
  • S1U:   年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
  • TT:      持有次数限制
  • MTT:   最大持有次数限制
  • DSS:   期望的幸存区大小
  • EC:     年轻代中Eden的容量 (字节)
  • EU:     年轻代中Eden目前已使用空间 (字节)
  • YGC:  从应用程序启动到采样时年轻代中gc次数
  • YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)

查看年轻代对象的信息及其占用量

jstat -gcnewcapacity [pid]

信息说明: 

  • NGCMN: 年轻代(young)中初始化(最小)的大小(字节)
  • NGCMX: 年轻代(young)的最大容量 (字节)
  • NGC:      年轻代(young)中当前的容量 (字节)
  • S0CMX:  年轻代中第一个survivor(幸存区)的最大容量 (字节)
  • S0C:       年轻代中第一个survivor(幸存区)的容量 (字节)
  • S1CMX:  年轻代中第二个survivor(幸存区)的最大容量 (字节)
  • S1C:       年轻代中第二个survivor(幸存区)的容量 (字节)
  • ECMX:    年轻代中Eden的最大容量 (字节)
  • EC:         年轻代中Eden的容量 (字节)
  • YGC:      从应用程序启动到采样时年轻代中gc次数
  • FGC:      从应用程序启动到采样时old代(全gc)gc次数

查看老年代对象的信息

jstat -gcold [pid]

信息说明:

  • MC:     metaspace(元空间)的容量 (字节)
  • MU:     metaspace(元空间)目前已使用空间 (字节)
  • CCSC:压缩类空间大小
  • CCSU:压缩类空间使用大小
  • OC:     Old代的容量 (字节)
  • OU:     Old代目前已使用空间 (字节)
  • YGC:  从应用程序启动到采样时年轻代中gc次数
  • FGC:  从应用程序启动到采样时old代(全gc)gc次数
  • FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
  • GCT:  从应用程序启动到采样时gc用的总时间(s)

查看老年代对象的信息及其占用量

jstat -gcoldcapacity [pid]

 信息说明:

  • OGCMN:Old代中初始化(最小)的大小 (字节)
  • OGCMX:Old代的最大容量(字节)
  • OGC:     Old代当前新生成的容量 (字节)
  • OC:        Old代的容量 (字节)
  • YGC:     从应用程序启动到采样时年轻代中gc次数
  • FGC:     从应用程序启动到采样时old代(全gc)gc次数
  • FGCT:   从应用程序启动到采样时old代(全gc)gc所用时间(s)
  • GCT:     从应用程序启动到采样时gc用的总时间(s)

查看最近一次GC统计和原因

jstat -gccause [pid]

 信息说明:

  • LGCC:最后一次GC原因
  • GCC:  当前GC原因(No GC 为当前没有执行GC)

jps

查看当前运行中java的进程

jps

查看进程启动时传递给main()的参数

jps -m

查看进程启动时的JVM参数

jps -v

部分报错情况

Cannot connect to core dump or remote debug server. Use jhsdb jmap instead

 jdk版本原因所导致的,在jdk8以后需要加上 jhsdb 以运行(注意这里的格式):

jhsdb jmap --heap --pid [pid]

ERROR: ptrace(PTRACE_ATTACH, ..) failed for 30865: Operation not permitted...

新版的Linux系统(Ubuntu 11.04之后会出现这种问题)加入了 ptrace-scope 机制。这种机制为了防止用户访问当前正在运行的进程的内存和状态,而一些调试软件本身就是利用 ptrace 来进行获取某进程的内存状态的(包括GDB),所以在新版本的Linux系统,默认情况下不允许再访问了, 可以临时开启(注意权限):

echo 0 > /proc/sys/kernel/yama/ptrace_scope

永久修改:

vi  /etc/sysctl.d/10-ptrace.conf kernel.yama.ptrace_scope = 0 

这篇关于JVM | 命令行诊断与调优 jhsdb jmap jstat jps的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/275728

相关文章

SpringBoot中四种AOP实战应用场景及代码实现

《SpringBoot中四种AOP实战应用场景及代码实现》面向切面编程(AOP)是Spring框架的核心功能之一,它通过预编译和运行期动态代理实现程序功能的统一维护,在SpringBoot应用中,AO... 目录引言场景一:日志记录与性能监控业务需求实现方案使用示例扩展:MDC实现请求跟踪场景二:权限控制与

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

Java注解之超越Javadoc的元数据利器详解

《Java注解之超越Javadoc的元数据利器详解》本文将深入探讨Java注解的定义、类型、内置注解、自定义注解、保留策略、实际应用场景及最佳实践,无论是初学者还是资深开发者,都能通过本文了解如何利用... 目录什么是注解?注解的类型内置注编程解自定义注解注解的保留策略实际用例最佳实践总结在 Java 编程

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti

Java 实用工具类Spring 的 AnnotationUtils详解

《Java实用工具类Spring的AnnotationUtils详解》Spring框架提供了一个强大的注解工具类org.springframework.core.annotation.Annot... 目录前言一、AnnotationUtils 的常用方法二、常见应用场景三、与 JDK 原生注解 API 的

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

Java中的StringBuilder之如何高效构建字符串

《Java中的StringBuilder之如何高效构建字符串》本文将深入浅出地介绍StringBuilder的使用方法、性能优势以及相关字符串处理技术,结合代码示例帮助读者更好地理解和应用,希望对大家... 目录关键点什么是 StringBuilder?为什么需要 StringBuilder?如何使用 St

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推