初步了解Windows应用程序内存结构 - 使用VMMAP工具
VMMap工具在此下載;
https://docs.microsoft.com/zh-cn/sysinternals/downloads/vmmap
VMMap 是一個(gè)進(jìn)程虛擬和物理內(nèi)存分析實(shí)用程序。?
它顯示了進(jìn)程的已提交虛擬內(nèi)存類(lèi)型的細(xì)分,以及操作系統(tǒng)為這些類(lèi)型分配的物理內(nèi)存量 (工作集) ;
看幾個(gè)程序的內(nèi)存情況;
?
?
根據(jù)網(wǎng)上資料,Type一列的含義如下;
Image(可執(zhí)行文件),
Mapped file(由CreateFileMapping以文件作為back up)。
Sharable(由CreateFileMapping以?xún)?nèi)存作為 back up)
Private Data(由Virtual Alloc分配)
Heap(由new,GlobalAlloc和HeapAlloc等分配)
Stack(棧占用的控件)
Page table(內(nèi)核里面維護(hù)當(dāng)前虛擬地址控件所需要的內(nèi)存)
Managed Heap(由.NET garbage collector分配和管理);
Image,這應(yīng)是程序員所寫(xiě)代碼編譯后裝入內(nèi)存的部分;
Private Data,這可能是程序的私有變量;
Page table,每個(gè)應(yīng)用程序的內(nèi)存都包含這個(gè),我還不了解;
Managed Heap,.Net寫(xiě)的程序才有這個(gè);
Mapped file,Sharable,這兩個(gè)有什么區(qū)別,我還不了解;按它說(shuō)都是用CreateFileMapping創(chuàng)建;
CreateFileMapping的基本用法是創(chuàng)建內(nèi)存映射文件,就是申請(qǐng)一片內(nèi)存,申請(qǐng)成功后該片內(nèi)存可以像訪(fǎng)問(wèn)文件一樣訪(fǎng)問(wèn);
以上是橫向的分類(lèi);
縱向的,又包括:
? ? Size: 總體大小,包括了commit和沒(méi)有reservce的內(nèi)存;
? ? Committed: committed的大小,包括Private內(nèi)存和可共享的內(nèi)存;
? ? Private:屬于當(dāng)前進(jìn)程的虛擬內(nèi)存,指的是當(dāng)你修改他時(shí)僅僅當(dāng)前進(jìn)程會(huì)受到影響;
以下的幾個(gè)指標(biāo)指的是物理內(nèi)存:
Total WS: 所有的working set,包括private working set和sharable working set;
Private WS: private working set,僅屬于當(dāng)前進(jìn)程的working set;
Sharable WS,可共享的working set;
Shared WS,已經(jīng)共享的working set,這個(gè)值應(yīng)該是sharable working set的一部分或者全部;
?
?
總結(jié)
以上是生活随笔為你收集整理的初步了解Windows应用程序内存结构 - 使用VMMAP工具的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Oracle 安装错误 - 无法在节点x
- 下一篇: MFC输出蛇行矩阵