简介
【VMMap】是进程的内存分析工具,可显示进程的已提交虚拟内存类型明细,以及操作系统分配给这些类型的物理内存量。 除了内存使用情况的图形表示形式外,VMMap 还可显示摘要信息和详细的进程内存映射。 借助强大的筛选和刷新功能,可以识别进程内存使用情况的来源以及应用程序功能的内存成本。
打开软件后,会弹出对话框,用于选择准备查看的进程名称。选中之后,点击【OK】,就可以查看对应程序的内存使用情况了,界面如下
详细解释
以上界面中,最重要的当属中间的表格,分横向和纵向两个维度来对内存进行分类。其首列从程序运行的角度,列明不同的内存来源
- Total 全部
- 【Heap】由new,GlobalAlloc和HeapAlloc等分配
- 【Managed Heap】由.NET garbage collector分配和管理
- 【Image】 可执行文件
- 【Mapped file】由CreateFileMapping以文件作为备份
- 【Sharable】由CreateFileMapping以内存作为备份
- 【Private Data】由Virtual Alloc分配
- 【Stack】栈占用的控件
- 【Page table】内核里面维护当前虚拟地址控件所需要的内存
表头则从内存本身的角度,给出占用的内存类型,又可分为
- 虚拟内存
- 【Size】总体大小,包括了commit和没有reservce的内存。如果这项和Committed不一致,那么就是说有reserve的内存。
- 【Committed】即内存的大小,包括Private内存和可共享的内存。
- 【Private】属于当前进程的虚拟内存,指的是当你修改他时仅仅当前进程会受到影响。
- 物理内存
- 【Total WS】所有的工作组,包括私有工作组和共享工作组。
- 【Private WS】private 工作组。仅属于当前进程的工作组。
- 【Sharable WS】可共享工作组。
- 【Shared WS】已经共享的工作组,小于等于Sharable WS。
如果想查看另一个进程的内存,点击【File】->【Select Process】或者直接按下【Ctrl+P】。
命令行
此外,VMMap还支持从命令行启动,其语法为
vmmap [-64] [-p <Pid or process name> [outputfile]] |[- 0 <inputfile>]
如果直接输入vmmap,则正常启动VMMap。如果输入-p外加进程号,则省略选择进程这个步骤。