俞木發

內存的使用情況可以通過任務管理器來查看。啟動任務管理器后切換到“性能”,接著在左側的窗格中定位到“內存”,在右側的窗格中就可以看到當前內存的使用情況。這里可以看到關于內存的很多參數(圖1)。我們主要關注下面的幾個參數:
使用中:本機進程使用的內存大小。任務管理器中的內存使用率就是以此來計算的,使用率=(使用中/總內存)×100%。
已提交“/”之前的數值:表示所有進程實際占用的內存。當這個值接近或者超過物理內存大小的時候,電腦的運行速度就會明顯變慢。
已提交“/”之后的數值:表示“物理內存+使用的虛擬內存(pagefile.sys)”的大小。
對本機內存的分配可以到“ht tps://docs.microsof t.c om/en-us/sysinter nals/downloads/rammap”下載R AMMap軟件,使用它來查看。啟動R AMMap后,它會在“使用計數”選項中將當前內存的所有分配情況全部列舉出來,并使用不同的顏色加以區分(圖2)。這里我們主要了解下面的2個參數:
進程私有:分配給每個進程使用的內存,通過該參數可以知道分配給程序的內存總數。
映射文件:映射到內存中的所有文件,如系統啟動后加載到內存中的驅動、程序啟動時加載的配置和運行庫文件(如很多DLL文件)、程序運行后讀取的文件(如Word編輯的文檔、日志文件)等。
如果在操作過程中總是發現內存不足,那么就可以根據R AMMap的內存分配值來進行管理。
情況1:“進程私有”占用大量內存
如上所述,進程私有是系統分配給每個進程使用的內存。如果系統后臺有占用內存很高的進程,這樣就容易導致系統的可用內存不足。此時可以啟動任務管理器并切換到“進程”,然后點擊“內存”列按照內存占用從大到小排序,依次將占用內存大的進程結束掉(圖3)。
情況2:映射文件占用大量內存
應用程序啟動后會同時加載很多文件,這些文件映射到內存中后同樣會占用大量的資源。默認情況下,我們在使用任務管理器結束進程后,這些映射文件占用的內存也會同步釋放,使得系統可用內存能夠增加。不過有時候由于程序和系統的兼容性有問題,導致進程雖然被終止,但映射文件沒有正常退出,這就是內存的泄露。比如筆者安裝了一款綠色版WPS,在使用一段時間后系統的運行速度會明顯變慢,最后甚至導致系統沒有響應,而且即使關閉WPS,運行速度仍然沒有明顯的改善。此時使用R AMMap查看,可以發現“映射文件”明顯占用了大量的內存(圖4)。
在圖2所示的界面中切換到“物理頁”選項卡,接著在下方的“過濾器”列表中選擇“使用”,在“是”列表中選擇“映射文件”,篩選后可以看到后臺還有多個WPS相關的映射文件存在,并且占用了系統的大量可用內存(圖5)。
繼續點擊菜單欄中的“清空”,然后依次點擊其下的所有清空菜單,這樣RAMMap會將泄露的內存回收,可以有效地增加系統的可用內存(圖6)。完成上述的操作后,再次切換到圖5所示的界面,按下F5鍵刷新,就看不到WPS映射文件的存在了。

如上所述,借助RAMMap的“清空”菜單可以回收已泄露的內存。如果在日常操作中經常遇到內存泄漏的問題,但又找不到是什么程序導致的,可以制作一個批處理快速回收內存。
先將RAMMap放置在“D:\”中備用,啟動記事本程序并輸入下列的代碼,然后將其保存為“d:\1.bat”,并將其快捷方式發送到桌面上。接著右擊桌面快捷方式并依次選擇“屬性→快捷方式→高級”,在打開的窗口中勾選“以管理員身份運行”(圖7)。
d:\rammap.exe -ew
d:\rammap.exe -es
d:\rammap.exe -es
d:\rammap.exe -et
d:\rammap.exe -e0
這樣,當以后需要回收內存時,只需運行桌面上的快捷方式,效果就相當于點擊圖6所示的所有清空菜單了(圖8)。RAMMap只是回收內存,并不會結束后臺進程,大家可以放心地使用。