已提交内存会慢慢涨,一结束掉 ctfmon.exe 就会猛降

2018-01-15 01:37:12 +08:00
 acess
一直用的 Win10 自带输入法。
已保存 ctfmon.exe 进程被我杀掉前的 VMMap 记录和 Full dump,有需要的也许我可以邮件发过去……
装了火绒和 QQ,不知道有没有影响。
5014 次点击
所在节点    Windows
27 条回复
Tink
2018-01-15 02:21:00 +08:00
虽然我能猜出来你想表达什么,但是你的描述真的让我没有试图解答的欲望
xupefei
2018-01-15 02:29:49 +08:00
把任务列表里内存相关的那几个,和缺页那一项选上观察一下。
acess
2018-01-15 03:02:44 +08:00
@Tink 不知道您猜出来了什么呢?因为我之前就发过这个帖子: https://www.v2ex.com/t/411473,所以,觉得我要把锅甩给 Win10 ?
我真心不知道出现这个问题的原因,网上似乎也搜不到别人有碰到类似的现象。
也许我这只是个例而已,确实没有必要追查吧……

@xupefei 是不是要用性能监视器?
这个问题似乎还不好重现,得等一段时间……


如果各位想重复实验(最好用虚拟机),也许可以用 AutoHotKey 脚本试试,比如这个:
Loop,
{
IfWinActive, 无标题 - 记事本
{
Send, sssssssss{SPACE}
Sleep, 200
Send, {CTRLDOWN}a{CTRLUP}
}
Sleep, 100
}
打开任务管理器 /性能监视器 /Procexp,跑一段时间 AHK 脚本,然后杀掉 ctfmon.exe ,看看是不是有类似的现象。
xupefei
2018-01-15 04:02:06 +08:00
我试了一试,ctfmon 的 commited size 并没有上涨,倒是 dwm 的涨了。停了一会儿自己降下来了。
acess
2018-01-15 04:31:09 +08:00
@xupefei 我试的结果是这样的(当然,用 Win10 自带微软拼音,我也没装其他输入法):ctfmon.exe 自己的 commit size 没涨,但是 system commit 是慢慢地涨,然后,一杀掉 ctfmon.exe ,system commit 就瞬间降回去了。
xupefei
2018-01-15 05:10:51 +08:00
嗯,我这边也是。但是 system commit 涨的不多,测试了 15min,它涨了大概 0.2GB 。还不如 Chrome 的零头。
我估计这里是把没被系统清除掉的旧虚拟内存分页也算上了。毕竟随时清理虚拟内存的话会对硬盘造成负担。
acess
2018-01-15 06:30:50 +08:00
@xupefei 你可以试试把 s 加多,多等一会。
神奇的地方有两点:任务管理器看不出异常;一干掉 ctfmon.exe (关掉用来测试的记事本好像也有效果),system commit 就骤降。
xupefei
2018-01-15 06:43:44 +08:00
@acess 所以我说那里是把未回收的分页也算上了啊。未回收的分页不属于任何进程,所以进程里体现不出来。

结束进程是个执行清理的触发器。如果我猜的没错的话,你结束其它进程应该也有这个效果。
acess
2018-01-15 07:10:10 +08:00
@xupefei 试了,就拿 AutoHotKey.exe 开刀,没反应。还是干掉 ctfmon.exe 立竿见影。
ragnaroks
2018-01-15 08:39:04 +08:00
16299.125 未能重现,不过我这里 ctfmon.exe 平常占用也不少,我笔记本只有 3M 多,到 PC 上就 20 多 M
zk8802
2018-01-15 10:01:35 +08:00
“已提交内存”会涨到多少? Unusable virtual memory size 又是多少?听上去好像是因为内存泄漏(提交内存大小不减少) + 堆内存碎片(大量的 unusable virtual memory )。建议用 WinDbg 调试 ctfmon.exe ,在虚拟内存分配函数( VirtualAlloc*)上下个断点,看看调用栈都有哪些。

Unusable virtual memory: http://blogs.microsoft.co.il/sasha/2014/07/22/tracking-unusable-virtual-memory-vmmap/
acess
2018-01-15 11:45:05 +08:00
@ragnaroks 你跑了多久?也许可以试试多加几个 s,跑个 20 分钟应该就可以看出来效果了—— ctfmon.exe 在任务管理器里的提交大小看上去并没有那么大,这个才是神奇的地方。
我是 16299.192 。
当然,也可能是我机器上有什么奇怪的东西吧……
acess
2018-01-15 11:51:48 +08:00
@ragnaroks 还有,几年前就有人吐槽微软拼音输入法占内存,我用的是自带微软拼音测试的,说不定别的输入法就没这个问题。
ragnaroks
2018-01-15 11:52:27 +08:00
@acess 几分钟,在资源监视器的 CPU 栏目里面看看加载项(dll),我这边全是系统加载项,也许你的有第三方的?
acess
2018-01-15 13:09:39 +08:00
@ragnaroks 试试多加几个 s,多跑一会,我这效果就蛮明显的。
换了另一台电脑,也是 Win10 1709,可以复现。
acess
2018-01-15 13:10:56 +08:00
@zk8802 可以涨到超过 2GB。
WinDbg 调试还是太专业了,我只是外行……而且 VirtualAlloc 大概会被非常频繁地调用吧。
acess
2018-01-15 13:14:33 +08:00
@zk8802 哦,是条件断点么……
我有空再看看。
h4lbhg1G
2018-01-25 15:47:24 +08:00
System Commit 是说那个 4 号进程的 Commit Size 么?我这里是 2G 多。杀掉 ctfmon 似乎也没变化。不过这几天,开机搜狗输入法会让第一次输入的程序自己关闭掉,导致我一个月的 chrome 打开标签丢了。
acess
2018-01-25 19:14:28 +08:00
@h4lbhg1G 就是点开 Procexp 工具栏上的统计图表,显示的整个系统的 System Commit。
拿身边另一台 Win10 1709 的电脑试了,也有类似现象。我觉得这很可能真的是 Win10 自带微软拼音的锅……
acess
2018-01-25 19:15:23 +08:00
@h4lbhg1G 这个值应该就是任务管理器内存使用量上的“已提交”

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/422903

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX