内存都去哪儿了? 管好Windows内存
2022-05-30俞木发
俞木发
1查看内存的使用情况
内存的使用情况可以通过任务管理器来查看。启动任务管理器后切换到“性能”,接着在左侧的窗格中定位到“内存”,在右侧的窗格中就可以看到当前内存的使用情况。这里可以看到关于内存的很多参数(图1)。我们主要关注下面的几个参数:
使用中:本机进程使用的内存大小。任务管理器中的内存使用率就是以此来计算的,使用率=(使用中/总内存)×100%。
已提交“/”之前的数值:表示所有进程实际占用的内存。当这个值接近或者超过物理内存大小的时候,电脑的运行速度就会明显变慢。
已提交“/”之后的数值:表示“物理内存+使用的虚拟内存(pagefile.sys)”的大小。
2查看内存的分配情况
对本机内存的分配可以到“ht tps://docs.microsof t.c om/en-us/sysinter nals/downloads/rammap”下载R AMMap软件,使用它来查看。启动R AMMap后,它会在“使用计数”选项中将当前内存的所有分配情况全部列举出来,并使用不同的颜色加以区分(图2)。这里我们主要了解下面的2个参数:
进程私有:分配给每个进程使用的内存,通过该参数可以知道分配给程序的内存总数。
映射文件:映射到内存中的所有文件,如系統启动后加载到内存中的驱动、程序启动时加载的配置和运行库文件(如很多DLL文件)、程序运行后读取的文件(如Word编辑的文档、日志文件)等。
3内存的管理
如果在操作过程中总是发现内存不足,那么就可以根据R AMMap的内存分配值来进行管理。
情况1:“进程私有”占用大量内存
如上所述,进程私有是系统分配给每个进程使用的内存。如果系统后台有占用内存很高的进程,这样就容易导致系统的可用内存不足。此时可以启动任务管理器并切换到“进程”,然后点击“内存”列按照内存占用从大到小排序,依次将占用内存大的进程结束掉(图3)。
情况2:映射文件占用大量内存
应用程序启动后会同时加载很多文件,这些文件映射到内存中后同样会占用大量的资源。默认情况下,我们在使用任务管理器结束进程后,这些映射文件占用的内存也会同步释放,使得系统可用内存能够增加。不过有时候由于程序和系统的兼容性有问题,导致进程虽然被终止,但映射文件没有正常退出,这就是内存的泄露。比如笔者安装了一款绿色版WPS,在使用一段时间后系统的运行速度会明显变慢,最后甚至导致系统没有响应,而且即使关闭WPS,运行速度仍然没有明显的改善。此时使用R AMMap查看,可以发现“映射文件”明显占用了大量的内存(图4)。
在图2所示的界面中切换到“物理页”选项卡,接着在下方的“过滤器”列表中选择“使用”,在“是”列表中选择“映射文件”,筛选后可以看到后台还有多个WPS相关的映射文件存在,并且占用了系统的大量可用内存(图5)。
继续点击菜单栏中的“清空”,然后依次点击其下的所有清空菜单,这样RAMMap会将泄露的内存回收,可以有效地增加系统的可用内存(图6)。完成上述的操作后,再次切换到图5所示的界面,按下F5键刷新,就看不到WPS映射文件的存在了。
4使用批处理高效回收内存
如上所述,借助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只是回收内存,并不会结束后台进程,大家可以放心地使用。