网站首页 > 博客文章 正文
Java内存分析工具——jmap
jmap
1、jmap [option]
jmap [option]
- pid: 可通过 jps 或者 ps 获得
示例如上面 示例图 一样,用ps 查询到java 的进程号 25488 ,然后 jmap 25488 查看到当前进程的相关信息
2、jmap [option] < executable
jmap [option] < executable
executable: 生成核心转储的Java可执行文件。
core: 要打印配置信息的核心文件
3、jmap [option] [server_id@]
server-id: 当很多debug服务在远程跑的时候,这个服务的唯一 ID
remote-hostname-or-IP: 远程服务的IP或者hostname
4、[option]
- dump: :生成Java堆快储快照,如下
live:仅将存活得对象dump出
format:编码格式
file :生成得文件名称 - finalizerinfo :显示出等待执行 finalize方法得对象
- heap : 显示Java堆详细信息
- histo[:live] :显示堆中对象的详细信息,如果加了live,只显示 存活 得对象信息
- clstats :显示出加载器静态对象
常用命令:
jmap [pid] # 查看具体情况
jmap -dump:live,format=b,file=xxx.xxx [pid] #将当前Java进程的内存占用情况导出来
jmap -histo:live [pid] >a.log # 显示 存活 得对象信息
jmap -finalizerinfo [pid] # 查看 等待执行finalize 方法的数量
jmap -heap [pid] # 堆摘要信息
1、jmap -heap [pid] : 显示堆的详细信息
- 堆的配置(Heap Configuration)
- 堆使用(Heap Usage)(新生代、老年代)
2、jmap -finalizerinfo [pid] : 查看 等待执行finalize 方法的数量
3、jmap -dump:live,format=b,file=xxx.xxx [pid] #将当前Java进程的内存占用情况导出来
jmap -dump:live,format=b,file=/home/lms/a.txt 25488
4、jmap -histo:live [pid] >a.log #将当前Java进程的内存占用情况导出来
jmap -histo:live 25488 >/home/lms/a.log
Java分析工具——jinfo
jinfo
1、jinfo [option]
jinfo [option]
pid: 可通过 jps 或者 ps 获得
示例如上面 示例图 一样,用ps 查询到java 的进程号 25488 ,然后 jinfo 25488 查看到当前进程的相关信息
2、jinfo [option] < executable
jinfo [option] < executable
executable: 生成核心转储的Java可执行文件。
core: 要打印配置信息的核心文件
3、jinfo [option] [server_id@]
server-id: 当很多debug服务在远程跑的时候,这个服务的唯一 ID
remote-hostname-or-IP: 远程服务的IP或者hostname
4、[option]
- flags : 打印所有的JVM参数
- flag :打印出指定 name 的JVM参数
- flag [+|-] : 让指定 name 的 JVM参数生效/失效
- flag = :修改 JVM参数,将 name 的值设置为 value
- sysprops :打印出所有的系统参数
jinfo -flags 25488 # 打印所有参数
jinfo -flag MaxHeapSize 25488 # 打印出MaxHeapSize
jinfo -sysprops 25488 # 打印所有系统变量
jinfo -flag -PrintGCDateStamps 25488 # 失效
jinfo -flag +PrintGCDateStamps 25488 # 生效
jinfo -flag MaxHeapFreeRatio=80 25488 # 设置值
jstat
jstat -gc PID
运行这个命令之后会看到如下列,给大家解释一下:
S0C:这是From Survivor区的大小
S1C:这是To Survivor区的大小
S0U:这是From Survivor区当前使用的内存大小
S1U:这是To Survivor区当前使用的内存大小
EC:这是Eden区的大小
EU:这是Eden区当前使用的内存大小
OC:这是老年代的大小
OU:这是老年代当前使用的内存大小
MC:这是方法区(永久代、元数据区)的大小
MU:这是方法区(永久代、元数据区)的当前使用的内存大小
YGC:这是系统运行迄今为止的Young GC次数
YGCT:这是Young GC的耗时
FGC:这是系统运行迄今为止的Full GC次数
FGCT:这是Full GC的耗时
GCT:这是所有GC的总耗时
其他的jstat命令
除了上面的jstat -gc命令是最常用的以外,他还有一些命令可以看到更多详细的信息,如下所示:
jstat -gccapacity PID:堆内存分析
jstat -gcnew PID:年轻代GC分析,这里的TT和MTT可以看到对象在年轻代存活的年龄和存活的最大年龄
jstat -gcnewcapacity PID:年轻代内存分析
jstat -gcold PID:老年代GC分析
jstat -gcoldcapacity PID:老年代内存分析
jstat -gcmetacapacity PID:元数据区内存分析
jstat -gc PID 1000 10
这行命令,他的意思就是每隔1秒钟更新出来最新的一行jstat统计信息,一共执行10次jstat统计
通过这个命令,你可以非常灵活的对线上机器通过固定频率输出统计信息,观察每隔一段时间的jvm中的Eden区对象
占用变化。
猜你喜欢
- 2025-05-14 JAVA程序员自救之路——Elasticsearch向量搜索
- 2025-05-14 探秘Java程序的“内存大爆炸”:JVM内存溢出问题排查
- 2025-05-14 Java 探秘:如何找出数组中重复的数字
- 2025-05-14 线上问题解决:java内存溢出问题分析,定位及解决
- 2025-05-14 Java虚拟机内存管理深度解读
- 2025-05-14 Java程序内存泄漏问题优化全攻略
- 2025-05-14 Jprofile解析dump文件使用详解
- 2025-05-14 Java中常见的内存泄漏场景解析
- 2025-05-14 Java内存泄漏暗杀指南!3招揪出8G“内存刺客”(附排查神器)
- 2025-05-14 Java内存泄漏:看不见的幽灵
你 发表评论:
欢迎- 366℃用AI Agent治理微服务的复杂性问题|QCon
- 358℃初次使用IntelliJ IDEA新建Maven项目
- 353℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 351℃Maven技术方案最全手册(mavena)
- 348℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 346℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 344℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 342℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)