资讯动态

如何使用Arthas进行内存分析?

发布时间:2026/8/7 11:14:50 来源:尧图企业网站定制
Arthas 内存分析完整教程生产可用Arthas 可以不重启、不停服直接排查 Java 内存问题内存飙高、内存泄漏、OOM、对象过多、GC 频繁等。我给你整理最实用、最常用的内存分析命令直接复制就能用。一、先看整体内存状况dashboard第一步永远是看全局内存、GC、堆使用情况。bash运行dashboard重点看这几列HEAP堆内存使用伊甸区、幸存者区、老年代NOHEAP元空间 / 非堆内存GCGC 次数、GC 耗时GC 飙高 内存有问题按q/CtrlC退出。二、导出堆快照最关键要定位内存泄漏、大对象、谁占内存必须导出堆快照hprof 文件。命令bash运行heapdump推荐只导出存活对象文件更小bash运行heapdump --live /tmp/myheap.hprof导出后用以下工具分析JProfilerEclipse MAT免费IDEA 自带 Profiler三、查看 JVM 内存详细配置jvmbash运行jvm能看到堆最大 / 最小内存伊甸区幸存者区比例垃圾收集器G1/ZGC/CMS直接内存、元空间大小四、查看类的实例数量 占用内存最实用1. 按对象占用内存倒序排障神器bash运行dashboard -i 1000 -n 1看Memory区域会显示占用内存最大的类实例数量字节数2. 精确查看某个类的实例数bash运行sc -d com.example.User # 先确认类已加载bash运行getstatic com.example.User instanceCount3. 查看所有类的实例数 内存按大小排序bash运行classloader -a或bash运行ognl java.lang.management.ManagementFactorygetMemoryMXBean().getHeapMemoryUsage()五、查看对象具体内容排查大对象如果你发现某个类实例超多想看里面存了什么数据bash运行vmtool -a -f com.example.User会打印出内存中所有 User 对象的内容。如果只想看10 个bash运行vmtool -a -n 10 -f com.example.User六、排查 GC 频繁 / 内存飙高套路生产标准流程步骤 1看整体bash运行dashboard看HEAP 使用率、GC 次数是否疯狂上涨。步骤 2导出堆快照bash运行heapdump --live /tmp/heap.hprof步骤 3看哪些类实例最多bash运行vmtool --action getInstances --className java.util.ArrayList --limit 10步骤 4看 GC 详情bash运行gc -i 1000每 1 秒打印一次 GC 情况。七、快速判断是否内存泄漏满足以下特征 90% 内存泄漏堆内存持续上涨不会回落FullGC 后内存下降很少某个业务类实例数越来越多不释放项目运行时间越久内存越高处理方法用heapdump导出快照用 MAT/JProfiler 查看GC Roots定位谁持有了这个对象导致无法回收八、最常用内存命令汇总bash运行dashboard # 全局内存GC看板 heapdump # 导出堆快照排查泄漏必备 jvm # 查看JVM内存配置 gc # 实时GC监控 vmtool -a -f 类名 # 查看内存中的对象实例 sc -d 类名 # 查看类是否被加载总结dashboard看整体内存与 GCheapdump定位内存泄漏的核心vmtool查看类实例与内容gc监控 GC 是否异常

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价