尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

jmap dump 是否需要加线程 ID

jmap dump 是否需要加线程 ID 目录常用语法jmap 哪些子命令会用到线程 ID容易混淆的点如果你想要 “某个线程相关”实操示例补充注意总结dump 堆快照-dump不需要线程 ID线程 ID 是给-histo:live、-dump:live也不用 tid只有-dump系列参数只接收进程 PID。常用语法bash# 导出整个堆dumppid是Java进程ID不是线程id jmap -dump:formatb,fileheap.hprof pid # 只dump存活对象Full GC一次 jmap -dump:live,formatb,fileheap_live.hprof pid这里传入的是JVM 进程 PID操作系统进程 id不是 Java 线程 tid。jmap 哪些子命令会用到线程 IDjmap 本身几乎没有参数接收 Java 线程 ID。jmap操作整个 JVM 堆作用域是进程不针对单个线程。想看单个线程栈用jstack pidjstack 输出里面才有 Java 线程 tid。容易混淆的点jmap -histo pid打印堆对象统计也是进程级别不能指定某个线程。堆是进程共享不属于某个线程所以不能 dump 某一个线程的堆。线程栈信息 ≠ heap dumpheap dump堆内存对象对象实例不包含调用栈jmapthread dump线程调用栈方法栈、锁jstack如果你想要 “某个线程相关”拿线程栈jstack pid可以输出全部线程栈再去筛选目标 tid。heap dump 只能导出整个进程堆dump 完之后在 MAT 工具里通过对象引用链再去关联线程。实操示例bash# 1.拿到java进程pid jps -l # 2.dump堆快照 jmap -dump:formatb,fileheap.hprof 12345补充注意-dump:live会触发 Full GC生产谨慎大堆应用 dump 会 STW文件大小接近堆内存不要把 jstack 输出的 nidnative 线程 id传给 jmapjmap 不识别。总结✅ jmap dump只传进程 PID不需要、也不支持传入线程 ID。 线程 ID 属于 jstack 线程栈分析的范畴。
返回列表