最近在吧里大约回复了几个类似的问题,就是为什么我16G的内存,没运行什么程序就无缘无故的被用掉了50%,零零星星做了一些回复,这里专门开一贴说明一下
除因为正常运行了某些应用程序造成的原因外,其他原因大致如下:
1)微软操作系统自身臃肿:早期Windows3.1只需要640K就可以运行,Win95大约需要几十M,WinNT需要大约3G以内就可以了(1G = 1024M,1M=1024K),因此,现今Windows 10新机子不装任何应用程序,开机就用掉3~4G,这个锅需要微软来背。只是,这种情况基本无解,除非换更高效的操作系统,如Linux
2)微软的Cache机制。大家都知道通常情况下访问内存的速度要远远高于访问硬盘的速度,因此,如果在需要从硬盘读取某块数据时,这些数据已经存在于内存中,系统就会直接从内存读取数据而非硬盘,即术语的cache中读取,这样会极大的加快硬盘的操作速度,即系统响应速度。当然Cache不仅仅存在于硬盘,包括对内存也一样,如CPU的一级二级缓冲什么,但这不是我们关心的。为达成这一点,操作系统在每次读取完硬盘数据后,即使这些数据已经被用完,不再需要,其并不会在内存中删除这些数据,甚至在应用程序退出,这样如果下次有需要的,再次需要读取这些数据时,这些数据很可能碰巧在内存中,即平时我们都有体会,我加载了一个应用程序,然后退出,再次加载这个应用程序,加载时间可能会变短,就是这个原因。
3)开机运行了太多的其他应用程序,如3x0大礼包等等;因此,可以尽量优化启动项,删除不必要的助手甚至直接使用微软自带杀毒软件等等
4)系统Bug,因为某些程序在运行中,因为码农的认为原因,造成内存泄漏,即内存会约占越大,如果开机即有这些问题,多发生于有问题的驱动程序,如Kill网卡驱动,这种情况可以更新有问题的驱动
以上是大致发生这类情况的原因,和一些简单的解决办法,但是,这些解决方式并不足以解决一些更为复杂的问题,包括Cache以及应用程序退出不释放内存的问题,因此,我找了微软官方论坛,看到一个微软的官方解决方案,简单介绍如下:
1)去微软应用商店下载:Sysinternals Suite(即微软官方故障诊断工具套装)
这是个微软官方的一个工具套装,相当于大家熟知的xxx助手,但功能更强大和更专业;当然也可以从其主页中只是下载需要用到的工具集,如我们需要的RAMmap,网址见之下说明
2)在工具集中找到RAMMap,其功能官方描述如下(可以从这个网站下载):
即该工具主要用途是检查内存使用情况,并可以释放不需要的内存占用
3)运行情况如下(我自己电脑举例,新开机):
4)选择清理内存,点开empty菜单,以此点击所有的选项,清除所有可以清除的内存,执行之后效果如下
可以看到:使用内存从最初的24.7G减少到21.3G,即减少了差不多3G
而缓冲区(Cache,分为已缓冲和分页缓冲)则大致减少了7G
即针对我的电脑,这次操作释放出大约近10G的内存容量
-------------------------------------------------------------------------------------------------------------------------
后记:内存释放只是微软官方故障诊断包的一个应用程序而已,微软故障诊断包提供了很多有用的功能,如Dsk2VHD,这个功能可以用于在购买了新电脑,但仍期望使用旧电脑中内存,即旧电脑到新电脑的迁移。其提供的方法是所谓的物理机虚拟化,这个方法具有更好的适应性,尤其,旧的操作系统无法使用新的硬件时,如Win11之前的操作系统无法使用大小核异构,Windows XP无法使用超出3G的内存等等,通过物理机虚拟化,即使旧的电脑在迁移后仍可以享受新电脑硬件升级带来的红利,如早期双核i3处理器,在经过虚拟化迁移后就可以享受新的更多核的优势,而所有这些不需要新电脑迁就旧的电脑,即新电脑无需降级,而且旧电脑不会影响到新电脑,即使之前电脑中因为存在病毒等,都会因为虚拟化被隔离开。这部分我之前曾写过一篇关于电脑迁移的文章,如果有需要可以再重新写一份
除因为正常运行了某些应用程序造成的原因外,其他原因大致如下:
1)微软操作系统自身臃肿:早期Windows3.1只需要640K就可以运行,Win95大约需要几十M,WinNT需要大约3G以内就可以了(1G = 1024M,1M=1024K),因此,现今Windows 10新机子不装任何应用程序,开机就用掉3~4G,这个锅需要微软来背。只是,这种情况基本无解,除非换更高效的操作系统,如Linux
2)微软的Cache机制。大家都知道通常情况下访问内存的速度要远远高于访问硬盘的速度,因此,如果在需要从硬盘读取某块数据时,这些数据已经存在于内存中,系统就会直接从内存读取数据而非硬盘,即术语的cache中读取,这样会极大的加快硬盘的操作速度,即系统响应速度。当然Cache不仅仅存在于硬盘,包括对内存也一样,如CPU的一级二级缓冲什么,但这不是我们关心的。为达成这一点,操作系统在每次读取完硬盘数据后,即使这些数据已经被用完,不再需要,其并不会在内存中删除这些数据,甚至在应用程序退出,这样如果下次有需要的,再次需要读取这些数据时,这些数据很可能碰巧在内存中,即平时我们都有体会,我加载了一个应用程序,然后退出,再次加载这个应用程序,加载时间可能会变短,就是这个原因。
3)开机运行了太多的其他应用程序,如3x0大礼包等等;因此,可以尽量优化启动项,删除不必要的助手甚至直接使用微软自带杀毒软件等等
4)系统Bug,因为某些程序在运行中,因为码农的认为原因,造成内存泄漏,即内存会约占越大,如果开机即有这些问题,多发生于有问题的驱动程序,如Kill网卡驱动,这种情况可以更新有问题的驱动
以上是大致发生这类情况的原因,和一些简单的解决办法,但是,这些解决方式并不足以解决一些更为复杂的问题,包括Cache以及应用程序退出不释放内存的问题,因此,我找了微软官方论坛,看到一个微软的官方解决方案,简单介绍如下:
1)去微软应用商店下载:Sysinternals Suite(即微软官方故障诊断工具套装)
这是个微软官方的一个工具套装,相当于大家熟知的xxx助手,但功能更强大和更专业;当然也可以从其主页中只是下载需要用到的工具集,如我们需要的RAMmap,网址见之下说明
2)在工具集中找到RAMMap,其功能官方描述如下(可以从这个网站下载):
即该工具主要用途是检查内存使用情况,并可以释放不需要的内存占用
3)运行情况如下(我自己电脑举例,新开机):
4)选择清理内存,点开empty菜单,以此点击所有的选项,清除所有可以清除的内存,执行之后效果如下
可以看到:使用内存从最初的24.7G减少到21.3G,即减少了差不多3G
而缓冲区(Cache,分为已缓冲和分页缓冲)则大致减少了7G
即针对我的电脑,这次操作释放出大约近10G的内存容量
-------------------------------------------------------------------------------------------------------------------------
后记:内存释放只是微软官方故障诊断包的一个应用程序而已,微软故障诊断包提供了很多有用的功能,如Dsk2VHD,这个功能可以用于在购买了新电脑,但仍期望使用旧电脑中内存,即旧电脑到新电脑的迁移。其提供的方法是所谓的物理机虚拟化,这个方法具有更好的适应性,尤其,旧的操作系统无法使用新的硬件时,如Win11之前的操作系统无法使用大小核异构,Windows XP无法使用超出3G的内存等等,通过物理机虚拟化,即使旧的电脑在迁移后仍可以享受新电脑硬件升级带来的红利,如早期双核i3处理器,在经过虚拟化迁移后就可以享受新的更多核的优势,而所有这些不需要新电脑迁就旧的电脑,即新电脑无需降级,而且旧电脑不会影响到新电脑,即使之前电脑中因为存在病毒等,都会因为虚拟化被隔离开。这部分我之前曾写过一篇关于电脑迁移的文章,如果有需要可以再重新写一份