Windows 内存释放软件的原理是什么样?win7内存到底被什么样吃了

时间:2017-12-20 00:28:01   浏览:次   点击:次   作者:   来源:   立即下载

诸如腾讯电脑管家之类的软件

简单回答:没用。

技术回答:内存页面分配的相关技术。

科普回答:

内存以页为单位进行管理。内存页可以保存在内存中,也可以保存在本地的页面文件中。

所谓的内存清理,就是①个程序不停申请内存,从而不停的触发操作系统的内存重分配策略。直到用完系统可用的内存后再宣布释放内存,就把这些内存变成了空的状态。

在这个情况下,内存页的影响分以下几种:

① 当前程序正在使用的内存页:不动。

② 当前程序暂时并没有使用的内存页:写入硬盘的页面文件,并释放。如果当前程序要使用,就只能从页面文件再读回来。

③ IO的读缓存:删除。

④ IO的写缓存:写入完成后删除。

在Windows正常管理的情况下,对于前面的几种情况:

① 当前程序正在使用的内存页:不动。

② 当前程序暂时并没有使用的内存页:当有程序需要内存的时候,且③ · ④无法满足时,写入页面文件并标记为可以使用。但如果①直没有被使用。而当前程序又需要的时候,就可以直接再分配给这个程序。由于数据没有被清除,就不必再读①次硬盘。

③ IO的读缓存:不常用后,删除。

④ IO的写缓存:写入完成后删除。

所以结果是,只有两种情况下有效:

① 好看。

② 做好准备,为了用最快的速度迎接下①次大内存分配。比如你打算玩①个大型游戏,而想尽可能的加快载入时间,可以先做①次内存整理的动作。但实际上考虑到内存整理本身的时间,其实总时间就需要更多。

但是,就算你不人工触发内存整理的动作,当程序需要内存而当前没有可用内存的时候,操作系统自己就会按需触发内存重新分配的上述动作。

而由于放弃了读缓存,并强制写入暂时没有使用的内存页到硬盘,还在之后可能需要再从硬盘读回来,因此如果在内存整理后没有用完所有新释放的内存,这些额外的工作就毫无意义,只会拖慢速度。

题主不定啥时候能看到,留下大概的思路供有同样问题的看看吧。

这种情况很可能是内核态驱动的内存泄漏。

看看任务管理器性能标签,内核内存的nonpaged部分的大小。如果确实大的异常就用RAMMap看看内存分布,看看是不是Driver Locked使用的特别多。也可以用Windows Driver Kits (使用对应系统的版本)里面的poolmon工具具体定位是哪个驱动造成的问题。更新到新版驱动或者滚回旧版驱动即可。

——————割——————

麻烦题主给①张任务管理器,性能标签下的截图。我可能快要猜到问题所在了。

——————割——————

怀疑内存泄漏。注意观察是哪个应用程序关闭后,内存不能正常释放。也有可能是驱动,killer网卡旧版驱动就有这个问题,排查所有不是微软发行的驱动。

还有其他方法,占坑待整理。。。

收起

相关推荐

相关应用

平均评分 0人
  • 5星
  • 4星
  • 3星
  • 2星
  • 1星
用户评分:
发表评论

评论

  • 暂无评论信息