如何找到已提交内存越来越大的原因?

最近经常提示内存不足,发现任务管理器中已提交内存变得很大,PageFile也很大。

但任务管理器的详细信息里面查看所有进程的提交内存都不是很大,加起来远远达不到任务管理器性能页签里面的已提交内存。

网上一搜,好像也有很多人遇到Win8的这个问题,但好像都没有得到解决。

不知道如何才能知道是什么软件制造了那么多已提交内存。

使用干净的方式启动Windows好像也没有效果,刚启用的时候不大,用着用着就越来越大。

如果在已提交内存比较大的时候对内存做个Dump能看出是什么程序在提交内存么?

我现在用NotMyFault工具已经得到了这样的一个内存Dump文件,但不知道如何才能看出已提交内存是谁消耗的。

网友测试1:

aida64里面,1就是已用物理内存,3是已用页面文件,2相当于已提交。

刚开机时一般1+3=2.

运行大量占用显存的程序时可以观察到1+3+(已使用显存)=2.貌似系统使用显存时会提交同样大小的内存空间。

当有程序的提交内存比工作集大很多时:1+3+(已使用显存+程序提交内存)=2.

当运行虚拟机时:1+3+(已使用显存+程序提交内存+分配给虚拟机的内存)=2.

我猜测有些情况下:1+3+(已使用显存+程序提交内存……+某种缓存+泄漏掉的内存)=2.

上述等式里面括号中的部分无限增大无法释放时,就出现了你所说的这个问题。我现在是chrome关闭gpu加速,superfetch打开,使用板载显卡。从我截的图可以看到,现在已用物理内存加上已用页面文件才2.6g左右,但已提交已经达到5g,这个数字再继续涨的话,说明问题还是存在,相当于内存泄漏。问题到底是怎样的,还需要继续试验。

 

本文的问题其实很简单。如果你有了解一点点操作系统原理的话你就能够很容易理解这个问题。

我们先定义几个概念:

1. 物理内存,也就是我们常常见到的内存条

2. 虚拟内存(磁盘上的 pagefile),在Linux下面叫做swap,这个是一个特定的文件或者设备,当物理内存不够的时候就会把内存保存(交换)到虚拟内存

3. 地址空间,物理内存的大小加上虚拟内存的大小就是地址空间

4. 提交的内存(commited memory),这是程序向windows请求的内存,一旦程序请求分配,windows就从地址空间里面分配一段地址。但是注意,实际上这里只分配了地址,没有真正分配内存。所有的提交的内存大小总和不允许超过地址空间。实际上使用的内存往往远远小于提交的内存。

某些程序往往会预先向windows请求大量的内存,但是实际上又不使用,最终导致提交的内存很大,超过地址空间,导致其他程序请求内存失败。而这个时候内存还是大量的空着的。这就是本文问题的所在。

如果要真的了解和学习操作系统,还是用 Linux 来的比较好。

问题原因:

我经常发现 Commit Size of Memory 增长到 20GB 左右,W​​indows 给了我警告。但是我找不到任何使用大量内存提交大小的进程。

这是一个很容易重现的错误,但在 Win 10 内核中根深蒂固。 

1) 打开任务管理器,转到性能选项卡,注意“已提交”数字。 

2)打开记事本,切换到中文拼音输入法,继续输入“s”,变成水水水水水水水。

每次可以一次输入15个汉字。继续执行大约 15 * 21 个字符,您将看到“已提交”内存增加了 100MB。 

3)您可以继续这样做,直到您的虚拟内存耗尽。直到注销您的 Win 10 帐户,内存才会释放。 

更有趣的是,您将无法找到提交这些泄漏内存的单个程序。在“详细信息”选项卡中,所有提交大小的总和远小于性能选项卡中报告的提交数量。 

我想知道这是否是一个深深植根于内核内存管理中的错误。正是 IME 非常清楚地显示了它。 

当我使用SurfacePro、SurfacePro2、SurfacePro3、SurfacePro4等所有电脑时,都被这个bug困扰。

windows 10周年更新后,发现这个问题仍然没有解决,只是“缓解”了。

原来的情况是

“微软拼音输入法单次最多输入19个汉字,大概输入7-8轮,committed 就会增加100M。”

现在的情况是,需要输入15/16轮,committed内存增加100m。  bug造成的问题依旧,只是之前可能电脑用了一天后,我的内存报警(手动设定了虚拟内存/页面文件的上限),现在是一天半后报警。    还是只能删除自带中文输入法,继续用第三方。

当我停止“\Microsoft\Windows\TextServicesFramework”中名为“MsCtfMonitor”的计划任务时,系统的提交大小释放了很多。

我不知道为什么这个错误大约两年没有修复。

凑合的解决方案:

自从win10自动升级后,我电脑上这个问题变的越来越严重了,浏览器看个网页或者随便启动啥软件都要崩溃,后来才发现是已提交内存越来越大。因此我的操作是手动设置虚拟内存,昨天设置了40G虚拟内存,结果用了一天,直到昨天晚上才崩溃。今天把虚拟内存改为80G,到现在为止还没出现内存不足的问题。。。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值