Windows Mobile 5 和 6的平台是建立在CE5.x的基礎上的。當可用的記憶體很少時,平台會自動關閉應用程式。而且,在這個移動平台上,同時只能運行32個process。在案頭電腦上,我們有4GB的可定址空間,每個應用程式預設具有2GB的空間。而在Windows Mobile平台上,每個應用程式就只有32MB的大小。Windows Mobile/CE 實現了系統的虛擬記憶體管理,作業系統使用微處理器的MMU來處理虛擬位址和物理地址間的即時轉換。我們可以使用工具來查看移動平台上的虛擬位址空間情況。
1. DumpMem
這個工具可以在微軟的協助和支援板塊裡面下載到。下載後,將檔案解壓,可以看到該工程是使用EVC3來編譯的,由於我的機子上沒有安裝Microsoft eMbedded Visual Tools 3.0,因此,就直接只用其中已經編譯好的可執行檔。由於模擬器是基於ARM的,因此可以在ARMRel檔案夾下找到dumpmem.exe這個檔案。如果是基於x86的CE PC,那麼就可以使用X86Rel檔案下的同名檔案。將其拷貝到storage目錄下,在模擬器上運行,效果如1所示:
圖1:dumpmem運行介面
選擇自己建立的應用程式“SMSNotifer”,點擊“Create File”後,會在裝置的根目錄下產生一個dumpmem.txt檔案,如2所示:
圖2:dumpmem.txt所在的目錄
使用word mobile開啟後,可以發現很多資訊,包括目標平台、選擇的應用程式資訊等等,如3所示:
圖3:dumpmem.txt所包含的資訊
2. Windows Mobile Virtual Memory Monster
基於上面這個DumpMem,Windows Mobile Virtual Memory Monster給出了更加形象的圖形化表示。紅色表示為空白,藍色表示該段空間為保留,綠色表示該段空間已經被分配。使用裝置上的左右鍵可以看不同的slot的情況,如4,展示了slot1~3的情況:
圖4:Slot1~3的記憶體佔用情況
這個例子使用C++來寫,並在VS2005環境下編譯的一個工程檔案。有這方面需求的朋友可以關注一下。
參考文章:
用於 Pocket PC 2002 上查看虛擬位址空間的 Dumpmem 工具 + 生產力
Slaying the Virtual Memory Monster - Part I
Slaying the Virtual Memory Monster - Part II
Visualizing the Windows Mobile Virtual Memory Monster