俞木發(fā)
內(nèi)存的使用情況可以通過(guò)任務(wù)管理器來(lái)查看。啟動(dòng)任務(wù)管理器后切換到“性能”,接著在左側(cè)的窗格中定位到“內(nèi)存”,在右側(cè)的窗格中就可以看到當(dāng)前內(nèi)存的使用情況。這里可以看到關(guān)于內(nèi)存的很多參數(shù)(圖1)。我們主要關(guān)注下面的幾個(gè)參數(shù):
使用中:本機(jī)進(jìn)程使用的內(nèi)存大小。任務(wù)管理器中的內(nèi)存使用率就是以此來(lái)計(jì)算的,使用率=(使用中/總內(nèi)存)×100%。
已提交“/”之前的數(shù)值:表示所有進(jìn)程實(shí)際占用的內(nèi)存。當(dāng)這個(gè)值接近或者超過(guò)物理內(nèi)存大小的時(shí)候,電腦的運(yùn)行速度就會(huì)明顯變慢。
已提交“/”之后的數(shù)值:表示“物理內(nèi)存+使用的虛擬內(nèi)存(pagefile.sys)”的大小。
對(duì)本機(jī)內(nèi)存的分配可以到“ht tps://docs.microsof t.c om/en-us/sysinter nals/downloads/rammap”下載R AMMap軟件,使用它來(lái)查看。啟動(dòng)R AMMap后,它會(huì)在“使用計(jì)數(shù)”選項(xiàng)中將當(dāng)前內(nèi)存的所有分配情況全部列舉出來(lái),并使用不同的顏色加以區(qū)分(圖2)。這里我們主要了解下面的2個(gè)參數(shù):
進(jìn)程私有:分配給每個(gè)進(jìn)程使用的內(nèi)存,通過(guò)該參數(shù)可以知道分配給程序的內(nèi)存總數(shù)。
映射文件:映射到內(nèi)存中的所有文件,如系統(tǒng)啟動(dòng)后加載到內(nèi)存中的驅(qū)動(dòng)、程序啟動(dòng)時(shí)加載的配置和運(yùn)行庫(kù)文件(如很多DLL文件)、程序運(yùn)行后讀取的文件(如Word編輯的文檔、日志文件)等。
如果在操作過(guò)程中總是發(fā)現(xiàn)內(nèi)存不足,那么就可以根據(jù)R AMMap的內(nèi)存分配值來(lái)進(jìn)行管理。
情況1:“進(jìn)程私有”占用大量?jī)?nèi)存
如上所述,進(jìn)程私有是系統(tǒng)分配給每個(gè)進(jìn)程使用的內(nèi)存。如果系統(tǒng)后臺(tái)有占用內(nèi)存很高的進(jìn)程,這樣就容易導(dǎo)致系統(tǒng)的可用內(nèi)存不足。此時(shí)可以啟動(dòng)任務(wù)管理器并切換到“進(jìn)程”,然后點(diǎn)擊“內(nèi)存”列按照內(nèi)存占用從大到小排序,依次將占用內(nèi)存大的進(jìn)程結(jié)束掉(圖3)。
情況2:映射文件占用大量?jī)?nèi)存
應(yīng)用程序啟動(dòng)后會(huì)同時(shí)加載很多文件,這些文件映射到內(nèi)存中后同樣會(huì)占用大量的資源。默認(rèn)情況下,我們?cè)谑褂萌蝿?wù)管理器結(jié)束進(jìn)程后,這些映射文件占用的內(nèi)存也會(huì)同步釋放,使得系統(tǒng)可用內(nèi)存能夠增加。不過(guò)有時(shí)候由于程序和系統(tǒng)的兼容性有問(wèn)題,導(dǎo)致進(jìn)程雖然被終止,但映射文件沒(méi)有正常退出,這就是內(nèi)存的泄露。比如筆者安裝了一款綠色版WPS,在使用一段時(shí)間后系統(tǒng)的運(yùn)行速度會(huì)明顯變慢,最后甚至導(dǎo)致系統(tǒng)沒(méi)有響應(yīng),而且即使關(guān)閉WPS,運(yùn)行速度仍然沒(méi)有明顯的改善。此時(shí)使用R AMMap查看,可以發(fā)現(xiàn)“映射文件”明顯占用了大量的內(nèi)存(圖4)。
在圖2所示的界面中切換到“物理頁(yè)”選項(xiàng)卡,接著在下方的“過(guò)濾器”列表中選擇“使用”,在“是”列表中選擇“映射文件”,篩選后可以看到后臺(tái)還有多個(gè)WPS相關(guān)的映射文件存在,并且占用了系統(tǒng)的大量可用內(nèi)存(圖5)。
繼續(xù)點(diǎn)擊菜單欄中的“清空”,然后依次點(diǎn)擊其下的所有清空菜單,這樣RAMMap會(huì)將泄露的內(nèi)存回收,可以有效地增加系統(tǒng)的可用內(nèi)存(圖6)。完成上述的操作后,再次切換到圖5所示的界面,按下F5鍵刷新,就看不到WPS映射文件的存在了。
如上所述,借助RAMMap的“清空”菜單可以回收已泄露的內(nèi)存。如果在日常操作中經(jīng)常遇到內(nèi)存泄漏的問(wèn)題,但又找不到是什么程序?qū)е碌?,可以制作一個(gè)批處理快速回收內(nèi)存。
先將RAMMap放置在“D:\”中備用,啟動(dòng)記事本程序并輸入下列的代碼,然后將其保存為“d:\1.bat”,并將其快捷方式發(fā)送到桌面上。接著右擊桌面快捷方式并依次選擇“屬性→快捷方式→高級(jí)”,在打開(kāi)的窗口中勾選“以管理員身份運(yùn)行”(圖7)。
d:\rammap.exe -ew
d:\rammap.exe -es
d:\rammap.exe -es
d:\rammap.exe -et
d:\rammap.exe -e0
這樣,當(dāng)以后需要回收內(nèi)存時(shí),只需運(yùn)行桌面上的快捷方式,效果就相當(dāng)于點(diǎn)擊圖6所示的所有清空菜單了(圖8)。RAMMap只是回收內(nèi)存,并不會(huì)結(jié)束后臺(tái)進(jìn)程,大家可以放心地使用。