初步了解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工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle 安装错误 - 无法在节点x
- 下一篇: CentOS查看已挂载的文件系统和文件系