# JVM内存分析 **Repository Path**: chencl-l/jvm-memory-analysis ## Basic Information - **Project Name**: JVM内存分析 - **Description**: 使用 Eclipse Memory Analyze 进行JVM内存分析 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-12-09 - **Last Updated**: 2025-04-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # JVM内存分析工具使用 1.使用`JDK`自带的`jmap`命令工具(需要`JDK`1.5版本以上) 2.使用`Eclipse Memory Analyzer`工具进行分析`jmap`产生的 .dump 文件 ## 1. jmap 命令使用 cmd 窗口直接使用 #### 1.1 jmap pid 查看进程的内存映像信息,将会打印目标虚拟机中加载的每个共享对象的起始地址、映射大小以及共享对象文件的路径全称。 ![image-20211209092121760](/img_md/image-20211209092121760.png) #### 1.2 jmap -heap pid 显示Java堆详细信息,打印一个堆的摘要信息,包括使用的GC算法、堆配置信息和各内存区域内存使用信息。 ![image-20211209092700023](/img_md/image-20211209092522191.png) #### 1.3 jmap -histo[:live] pid 显示堆中对象的统计信息。 :live是可选参数,如果加上,则只计算活动的对象。 ![image-20211209094450738](/img_md/image-20211209094450738.png) #### 1.4 jmap -clstats pid 打印类加载器信息。打印Java堆内存的永久保存区域的类加载器的智能统计信息。对于每个类加载器而言,它的名称、活跃度、地址、父类加载器、它所加载的类的数量和大小都会被打印。此外,包含的字符串数量和大小也会被打印。(如果系统比较复杂,内存比较多,分析时间可能会较长) ![image-20211209093404763](/img_md/image-20211209093404763.png) #### 1.5 jmap -finalizerinfo pid 打印等待终结的对象信息。 ![image-20211209093646205](/img_md/image-20211209093646205.png) > Number of objects pending for finalization: 0 说明当前F-QUEUE队列中并没有等待Fializer线程执行final #### 1.6 jmap -dump:[live,]format=b,file=\ pid > 生成堆转储快照dump文件。live子选项是可选的。如果指定了live子选项,堆中只有活动的对象会被转储。 得到dump文件,就可以通过工具进行分析。 ## 2.Eclipse Memory Analyzer 分析dump文件 #### 2.1 打开软件,加载dump文件 image-20211209100022785 #### 2.2