VMMap:强大的内存分析工具使用指南
1. VMMap的启动与追踪
VMMap在启动时会将一个DLL注入到目标进程中,并拦截其虚拟内存API调用。它会捕获内存分配的类型、大小、内存保护以及分配时的调用栈信息。在64位Windows系统中,VMMap可以对x86和x64程序进行检测和追踪,并相应地启动32位或64位版本。不过,在64位Windows系统上,它无法对为“Any CPU”构建的.NET程序进行检测和追踪,但在32位Windows系统上可以。若要在64位系统上分析“Any CPU”程序,可从“Select Or Launch Process”对话框的“View A Running Process”选项卡中选择该程序。
2. VMMap窗口界面
选择或启动一个进程后,VMMap会对其进行分析,并以图形和表格形式展示虚拟和物理内存信息。内存类型通过颜色编码显示,“Summary View”还可作为颜色索引。
-已提交内存汇总图:这是VMMap窗口中的第一个柱状图,不同颜色区域展示了进程地址空间中不同类型已提交内存的相对比例,也是其他两个图的缩放基础。图右侧上方显示的总数是进程的“可访问”内存,不包括仅保留但未访问的区域和不可用区域,这些内存由RAM、分页文件或映射文件支持。
-私有字节汇总图:此图展示了进程中不可与其他进程共享的内存,由物理RAM或分页文件支持,包括堆栈、堆、原始虚拟内存、页表以及映像和文件映射的读写部分。图右侧上方的标签显示了进程私有内存的总大小,柱状图中的彩色区域表示各种内存分配类型对私有字节使用的贡献比例,其向右侧的延伸程度表示与已提交虚拟内存的