作者:1466
链接:https://www.zhihu.com/question/39716538/answer/883031599
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
任务管理器上显示的每个进程占用的内存,是进程的专用内存,即进程运行的时候,这部分就被它占着,不能被其他程序使用。
而实际上每个进程占用的内存并不是那么多,只是还有一部分占用的内存是可共享内存,即在你运行其他程序而内存不够时,其他程序可能会抢占可共享的内存,有些程序会因此而崩溃
而所有进程的专用内存和可共享内存加起来,才是任务管理器中的使用中内存,也就是你所看见的使用量,并且算内存占用率的时候,也是用这部分内存除以总可用内存,因为这两部分都是真的存在你的内存条里的部分,所以是真正字面意义上的内存使用率
为什么要强调总"可用"内存呢?因为实际上有一部分内存是不可用的,为硬件保留的内存,供BIOS,各类硬件驱动使用,一般你接的外部设备越多,这部分占用就越大,保留内存大小过大时的解决办法会在问题解决部分提到.总之,你电脑实际安装的内存=(物理)总可用内存+为硬件保留的内存,
在任务管理器-性能-内存,显示的信息所代表的含义:
使用中:当前所有进程申请的,且实际存储在内存条里的内存的量
已压缩:win10引入了内存压缩技术,被压缩的内存占用,同样是在内存条里的
可用:内存条的总可用内存-使用中内存
已提交(斜线左侧):这是所有进程申请的内存空间,一定比已使用的大,进程申请了空间,但是并不一定就全占了,如果你开启了虚拟内存(其实应该叫分页文件),有一部分可能在分页文件里,而就算你没有启用分页文件,也并不是申请了多少,就在内存条里占用多少的,所以你会发觉已提交不管怎样都比使用中的内存要大,而已提交接近峰值时,再开应用程序,就已经可能出现崩溃了,因此只看使用中的内存并不准确
已提交(斜线右侧):你系统可以使用的逻辑内存总量,windows中将内存一视同仁为逻辑内存,逻辑内存总量=(物理)总可用内存+分页文件,一些存在内存条里的,不常用的内存,windows会将其移动到磁盘的pagefile.sys,即分页文件内
为什么叫分页这个奇怪的名字呢,因为windows使用了页式存储管理内存,就是把你的所有内存当成了一本书一样,然后划分成一页一页这样的区块,这样使用页号就能定位某个区块,再告诉系统是这页的第几个"字",系统就能快速知道要存要用的内存在哪里了,而把这本书的一部分页面,放到磁盘上,自然就叫它"分页"了(不过英文只是简单地称作pagefile)
已缓存:windows会将一些数据存到物理内存中,提升系统的速度,当需要内存时,这部分空间会自动释放,因此不必顾忌,这部分内存虽然被使用了,但并不是占用,不是"霸着位置",是可以随时让出位置的,起加速作用的内存,并不属于"使用中的内存"
分页缓冲池&非分页缓冲池:这两部分内容存储的都是系统的内核和驱动程序,区别是,分页缓冲池的内容是存在磁盘上的,而非分页缓冲池的内容是存在物理内存中的(而且是必须存在物理内存中的)
在资源监视器中,你可以看到更详细的内容,"为硬件保留的内存","可共享","专用"同上,"正在使用"等同于"使用中的内存","备用"大体等同于"已缓存",剩下的:
已修改:有部分内容被放到了内存中,但在使用时又必须移到硬盘内,这部分为已修改内存(已修改+备用=已缓存)
可用:没放啥要用的东西,需要时被优先占用的内存
硬中断:表示访问磁盘分页文件作内存的次数,如果数量太大那么说明物理内存不足
提交:操作系统为进程保留的虚拟内存量
工作集:进程当前在物理内存上实际占用的量
首先关于题主的问题,一方面时间久远应该不需要解答了,另一方面,实际上对于64位的win10系统,4G内存开机占60%是正常现象
一般用户的开机启动内容在500MB以内,而4G,8G内存的win10 64位系统,一般开机启动系统自身就会占用1.5-2.5GB内存,16G内存的则占用在2.5G-3.5G,内存越大吃的越多,系统也越快,只有达到一定程度(比如128GB内存),系统才不会继续吃更多,而32位系统则占用的更少(理论上少一半,实际上由于各种优化存在,并不会如此)
下面讲解一般情况下问题的排查解决方式:
首先正常开机,不要人为打开任何程序,然后打开任务管理器,点击用户标签页,查看内存占用,一般包含常规的启动项在内,这部分小于500MB是比较正常的,如果明显较大,那么应该是你的启动项有内存占用大户,你可以直接在任务管理器进程页,点击内存排序,查看有没有内存占用较大的程序.
要关闭自启动程序,你可以检查:
这可以解决大部分第三方程序的占用问题,对于系统程序异常内存占用问题,你可以尝试:
win+R -> cmd -> sfc /scannow
这可以修复很多系统问题,也包括开始菜单频繁假死之类,你可以从此处查看更多说明:
使用系统文件检查器工具修复丢失或损坏的系统文件support.microsoft.com
另外,核显也会占用一部分内存作为显存,但一般量比较小(常规桌面使用,网页浏览,一般在100MB-500MB),你可以在任务管理器-性能-GPU查看共享GPU内存占用,如果出现异常可以尝试更新显卡驱动,独显也会使用内存,但是都有专用显存,一般不会出问题
关于为硬件保留的内存异常占用:
首先你的核显用作显存的内存并不会在此类,这是供BIOS,各类硬件驱动使用的内存
已压缩内存为0:
右击任务栏的windows徽标,以管理员模式启动powershell(或者启动管理员命令提示符,再输入powershell启动),输入get-mmagent,查看MemoryCompression,PageCombining是否为False,若是,分别输入enable-mmagent -mc和enable-mmagent -pc设置为True
此外有部分推荐关闭Superfetch服务的(自17682版本的win10开始,你应该找不到Superfetch服务,因为它改名叫SysMain了(微软改名部又立功了)),本人亲测开关后,内存占用变化没啥明显感觉,开着有助于系统更快,它可以尝试判断将要运行的程序,预读到内存,前面的MemoryCompression,PageCombining也依赖于此