Windows 内存释放软件的原理是什么样?win7内存到底被什么样吃了
诸如腾讯电脑管家之类的软件
简单回答:没用。
技术回答:内存页面分配的相关技术。
科普回答:
内存以页为单位进行管理。内存页可以保存在内存中,也可以保存在本地的页面文件中。
所谓的内存清理,就是①个程序不停申请内存,从而不停的触发操作系统的内存重分配策略。直到用完系统可用的内存后再宣布释放内存,就把这些内存变成了空的状态。
在这个情况下,内存页的影响分以下几种:
① 当前程序正在使用的内存页:不动。
② 当前程序暂时并没有使用的内存页:写入硬盘的页面文件,并释放。如果当前程序要使用,就只能从页面文件再读回来。
③ IO的读缓存:删除。
④ IO的写缓存:写入完成后删除。
在Windows正常管理的情况下,对于前面的几种情况:
① 当前程序正在使用的内存页:不动。
② 当前程序暂时并没有使用的内存页:当有程序需要内存的时候,且③ · ④无法满足时,写入页面文件并标记为可以使用。但如果①直没有被使用。而当前程序又需要的时候,就可以直接再分配给这个程序。由于数据没有被清除,就不必再读①次硬盘。
③ IO的读缓存:不常用后,删除。
④ IO的写缓存:写入完成后删除。
所以结果是,只有两种情况下有效:
① 好看。
② 做好准备,为了用最快的速度迎接下①次大内存分配。比如你打算玩①个大型游戏,而想尽可能的加快载入时间,可以先做①次内存整理的动作。但实际上考虑到内存整理本身的时间,其实总时间就需要更多。
但是,就算你不人工触发内存整理的动作,当程序需要内存而当前没有可用内存的时候,操作系统自己就会按需触发内存重新分配的上述动作。
而由于放弃了读缓存,并强制写入暂时没有使用的内存页到硬盘,还在之后可能需要再从硬盘读回来,因此如果在内存整理后没有用完所有新释放的内存,这些额外的工作就毫无意义,只会拖慢速度。
题主不定啥时候能看到,留下大概的思路供有同样问题的看看吧。
这种情况很可能是内核态驱动的内存泄漏。
看看任务管理器性能标签,内核内存的nonpaged部分的大小。如果确实大的异常就用RAMMap看看内存分布,看看是不是Driver Locked使用的特别多。也可以用Windows Driver Kits (使用对应系统的版本)里面的poolmon工具具体定位是哪个驱动造成的问题。更新到新版驱动或者滚回旧版驱动即可。
——————割——————
麻烦题主给①张任务管理器,性能标签下的截图。我可能快要猜到问题所在了。
——————割——————
怀疑内存泄漏。注意观察是哪个应用程序关闭后,内存不能正常释放。也有可能是驱动,killer网卡旧版驱动就有这个问题,排查所有不是微软发行的驱动。
还有其他方法,占坑待整理。。。
- 5星
- 4星
- 3星
- 2星
- 1星
- 暂无评论信息