初步了解Windows应用程序内存结构 - 使用VMMAP工具

Posted bcbobo21cn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初步了解Windows应用程序内存结构 - 使用VMMAP工具相关的知识,希望对你有一定的参考价值。

VMMap工具在此下载;

https://docs.microsoft.com/zh-cn/sysinternals/downloads/vmmap

VMMap 是一个进程虚拟和物理内存分析实用程序。 
它显示了进程的已提交虚拟内存类型的细分,以及操作系统为这些类型分配的物理内存量 (工作集) ;

看几个程序的内存情况;

 

 

根据网上资料,Type一列的含义如下;

Image(可执行文件),
Mapped file(由CreateFileMapping以文件作为back up)。
Sharable(由CreateFileMapping以内存作为 back up)
Private Data(由Virtual Alloc分配)
Heap(由new,GlobalAlloc和HeapAlloc等分配)
Stack(栈占用的控件)
Page table(内核里面维护当前虚拟地址控件所需要的内存)
Managed Heap(由.NET garbage collector分配和管理);

Image,这应是程序员所写代码编译后装入内存的部分;

Private Data,这可能是程序的私有变量;

Page table,每个应用程序的内存都包含这个,我还不了解;

Managed Heap,.Net写的程序才有这个;

Mapped file,Sharable,这两个有什么区别,我还不了解;按它说都是用CreateFileMapping创建;
CreateFileMapping的基本用法是创建内存映射文件,就是申请一片内存,申请成功后该片内存可以像访问文件一样访问;

以上是横向的分类;

纵向的,又包括:

    Size: 总体大小,包括了commit和没有reservce的内存;
    Committed: committed的大小,包括Private内存和可共享的内存;
    Private:属于当前进程的虚拟内存,指的是当你修改他时仅仅当前进程会受到影响;

以下的几个指标指的是物理内存:
Total WS: 所有的working set,包括private working set和sharable working set;
Private WS: private working set,仅属于当前进程的working set;
Sharable WS,可共享的working set;
Shared WS,已经共享的working set,这个值应该是sharable working set的一部分或者全部;

 

 

以上是关于初步了解Windows应用程序内存结构 - 使用VMMAP工具的主要内容,如果未能解决你的问题,请参考以下文章

JAVA堆内存和栈内存初步了解

在windows环境初步了解tuxedo

Redis初步了解

C 内存管理初步了解

进程管理内存管理存储管理初步了解

Windows 逆向使用 CE 分析内存地址 ( 运行游戏 | 使用 CE 工具分析游戏内子弹数量对应的内存地址 | 内存地址初步查找 | 使用二分法定位最终的内存地址 )