如何使Windows 7在缓存方面的积极性降低?


16

我最近注意到,计算机上的Windows 7一直在抱怨内存不足,我应该关闭一些程序。然后通常会指出我正在运行的程序确实存在内存泄漏并且已经变得很大。但是,通常这些程序以20 MB的RAM使用量开始,并且只有在运行该程序12到24小时之后,它们才会增长到最多200 MB的RAM使用量。我永远不会同时运行三个以上的程序,因此从运行程序中可以看到最大600MB的RAM使用率。

我在具有4GB RAM的计算机上运行Windows 7 x64。起初,我实际上忘记了这一点,并且在Windows抱怨时只是重启程序,但是现在我想起来了,Windows抱怨我使用600MB的RAM(即使包括操作系统本身使用的内存也不足2GB)这一事实似乎很奇怪。 。因此,我打开了系统进程窗口,从列出的进程和系统进程中查看我的总内存使用情况。它加起来刚好超过700MB,所以我还是很困惑。然后我转到资源监视器并打开“内存”选项卡。我想在那里找到了答案。它指出我实际上只使用了33%的RAM。但是,在“物理内存”资源分配栏上,“修改”部分最大为2.3GB,“备用”部分最大为540MB,“空闲”部分最大为20MB,“缓存”内存列为2。列出的8GB和可用内存为550MB。(当然,这些值会略微四舍五入,因为您在我撰写本文时一直在变化。)

因此,显然Windows 7使用的内存比我多。在过去的某个时候,我确实对已安装的Windows服务菜单进行了一些修改,但这只是为了禁用某些主机服务,因为我不想进行任何媒体共享,无法启用Telnet客户端并删除Internet资源管理器,但这可能是我的错。有什么方法可以使Windows不这样做,或者至少不那么主动地缓存很多,因此我不再收到这些“内存不足”的通知?


2
OP误解了问题。他的支持虚拟内存不足。他对物理内存的所有分析都是无关紧要的。您可以拥有足够的可用物理内存,但没有足够的可用备用虚拟内存,并且弹出内存警告是有关备用虚拟内存(而非物理内存)短缺的警告。(尽管物理内存从驱动程序泄漏可能会间接导致问题。)
David Schwartz

“ OP误解了问题。” 几个答复者也一样。:(
Jamie Hanrahan

Answers:


10

备用内存不是问题,它被认为是“空闲”的,将根据请求重新分配-它仅包含程序最近使用的内存,但现在已释放。如果另一个程序请求的内存多于“空闲”内存,则系统应无缝地从“备用”集分配内存(因为“备用”内存目前尚未真正使用)。

过多的修改内存是您的问题,因为无法轻松重新分配它。看这里。这可能是由于内存泄漏(似乎与您的第一段相对应-哪些程序正在泄漏?)或页面文件太小(页面文件是固定大小还是已停用?)引起的。


3
正如我在对CJM的回答的评论中所指出的那样,我关闭了所有有问题的应用程序(某些独立PC游戏),并且仅运行了任务管理器,资源监视器,AVG和Chrome,但仍具有1.6GB的修改内存。我确实一次只能打开计算机几天,这与您链接的文章中的配置文件相符。但是,该网页上的注释是要查找具有较大提交大小的进程。当前,这是来自nSvcAppFlt.exe的过程。它的工作集大小仅为30MB,但提交大小为13.5GB。是什么赋予了?
grg-n-sox 2010年

2
那是泄漏您的内存的程序。另请参阅social.answers.microsoft.com/Forums/en-US/w7performance/thread/…。删除它,一切都应该很好。
AKID

非常感谢你。其实那很漂亮。因此,基本上,如果我注意到我的RAM被耗尽了,我可以转到资源监视器,查看“修改后的内存”部分是否很大,并查看哪个进程的提交大小很大,并且发现我的内存泄漏程序?绝对是Windows很好的诊断工具。
grg-n-sox 2010年

禁用或升级Nvidia防火墙软件。
大卫·史瓦兹

在最后一段中,您有三个“您”应该是“您的”。(不能建议进行编辑,太少了。)
Shadow The Burning Wizard

4

SuperFetch抢先式缓存不是您的问题。Windows 7将使用尽可能多的备用内存来抢先缓存其认为您接下来需要的内容。如果操作正确,它将为您节省一些时间,并且您的应用程序显示更快,响应速度更快。

如果您猜错了,并且您还需要其他一些数据,Superfetch会释放它所拥有的一些内存,以使您能够加载真正需要的数据。请参阅:http : //arstechnica.com/microsoft/news/2010/02/behind-the-windows-7-memory-usage-scaremongering.ars

如果您遇到“内存不足”的问题,那不是因为SuperFetch-因为如果应用程序需要,它将根据需要放弃尽可能多的内存。超取正在使用可用的内存(550MB),因此显然您还没有用完内存。即使您确实用完了所有RAM,您的计算机仍将退回到虚拟内存,尽管由于性能下降,您还是希望避免这种情况。

因此,这表明您的``内存不足''问题是由于其他地方的问题引起的-也许您泄漏的应用程序中的一个正在消耗(而不是放弃)其他类型的资源...

无论哪种方式,解决问题的方法都可能是通过解决有问题的应用程序而不是通过弄乱SuperFetch来找到的。


我知道内存的“待机”部分是缓存的内存的一部分,但是我不得不怀疑这个问题是我的程序。我现在将它们全部关闭,因此我正在运行的是AVG,任务管理器,资源监视器以及带有4个标签的单个Chrome窗口。只有1042MB的可用空间和1417MB的可用内存,但是我仍然有庞大的已修改内存块,占用了1633MB,任务管理器将其视为已用内存,并给了我内存不足的通知。有没有办法减少修改的内存量,或者只是关闭内存不足通知?
grg-n-sox 2010年

0

由于您不认为问题是由内存泄漏程序引起的,因此可以选择增加页面文件大小。

虽然页面文件不是您的主内存,但它将允许操作系统将更多数据交换到硬盘驱动器,并希望停止“内存不足”消息。唯一的其他选择是删除与具有13GB巨大足迹的进程相关的程序,尽管我不知道哪个程序需要分页那么多的内存,除非它是某些高端PC游戏或3D渲染软件。


0

根据我的经验,备用内存蠕变是一个实际的问题。例如,如果我在滚动窗口模式下为长篇文章运行Snagit,则当仅在待机内存上运行时,会有部分文章未被捕获。无论如何,我发现我的计算机在待机内存上运行缓慢。

为了解决该问题,我使用了免费的Glary Utilities中的内存优化器。我的电脑有6 GIG的内存。第一次启动时,根据Windows的资源监控器,我大约有2 GIG的使用中内存,2 GIG的备用内存和2 GIG的免费内存。在半天左右的时间内,无论我是否使用计算机,我的所有Free-Free内存都将变为Standby内存。现在,我有了在Windows上启动的Glary Utilities内存优化器,可以使我的计算机无限期地运行,并具有完整的2 GIG Free-Free内存可用。

每次我坐下来参加另一个会议时,我首先双击内存优化器托盘图标并进行优化。要求释放我原来的2 GIG Free-Free内存。我可以要求更多,但这是无论如何它都会释放的最大金额。优化程序大约需要30秒钟才能完成,这比重新启动所需的时间要短得多。它具有自动优化模式,但我一直无法弄清楚如何使其工作。


备用内存不是问题。
Jamie Hanrahan 2014年

应该废弃“内存优化器”。备用RAM是最近在进程中“使用”的RAM。由于替换了工作集,它被排除在那些流程之外,但是仍然包含它在“使用中”时的操作。如果某个过程恰好需要这些页面之一中的内容,则可以将该页面快速返回到该过程。这就是为什么“备用”被视为“缓存”计数的一部分的原因。但是,备用计算机也可以像其他可用RAM一样“可用”。您的“内存优化”刚搬了一堆从待机状态到免费的网页,即你击落待机缓存[...]
杰米·汉拉汉

[...]没有提供更多的RAM。由于“待机”始终是“可用”!在Vista和更高版本中,Superfetch现在可以将Standby的一部分用于其主动文件缓存,但是这些页面仍可根据需要重新用于其他过程。因此,SuperFetch也不会将任何页面从“可用”中删除。摆脱“内存管理器”,它正在损害系统的性能,从而导致不必要的磁盘I / O。
Jamie Hanrahan

-1

解决这个问题

转到start-run-msconfig,然后提供服务并从“ Windows驱动程序基础”中删除对勾。单击确定,然后重新启动计算机。

切记-只有上述步骤才能解决此问题。如果您已禁用services.msc,则它在引导操作系统时仍处于活动状态,它将阻塞您的内存。

要验证这一点,请使用该工具


禁用WDF服务将禁用任何依赖于该驱动程序模型的设备。这是一个坏主意。
Jamie Hanrahan 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.