1
Tink 2018-01-15 02:21:00 +08:00 via iPhone
虽然我能猜出来你想表达什么,但是你的描述真的让我没有试图解答的欲望
|
2
xupefei 2018-01-15 02:29:49 +08:00
把任务列表里内存相关的那几个,和缺页那一项选上观察一下。
|
3
acess OP @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 ,看看是不是有类似的现象。 |
4
xupefei 2018-01-15 04:02:06 +08:00
我试了一试,ctfmon 的 commited size 并没有上涨,倒是 dwm 的涨了。停了一会儿自己降下来了。
|
5
acess OP @xupefei 我试的结果是这样的(当然,用 Win10 自带微软拼音,我也没装其他输入法):ctfmon.exe 自己的 commit size 没涨,但是 system commit 是慢慢地涨,然后,一杀掉 ctfmon.exe ,system commit 就瞬间降回去了。
|
6
xupefei 2018-01-15 05:10:51 +08:00
嗯,我这边也是。但是 system commit 涨的不多,测试了 15min,它涨了大概 0.2GB 。还不如 Chrome 的零头。
我估计这里是把没被系统清除掉的旧虚拟内存分页也算上了。毕竟随时清理虚拟内存的话会对硬盘造成负担。 |
7
acess OP @xupefei 你可以试试把 s 加多,多等一会。
神奇的地方有两点:任务管理器看不出异常;一干掉 ctfmon.exe (关掉用来测试的记事本好像也有效果),system commit 就骤降。 |
8
xupefei 2018-01-15 06:43:44 +08:00 via Android
|
10
ragnaroks 2018-01-15 08:39:04 +08:00
16299.125 未能重现,不过我这里 ctfmon.exe 平常占用也不少,我笔记本只有 3M 多,到 PC 上就 20 多 M
|
11
zk8802 2018-01-15 10:01:35 +08:00 1
“已提交内存”会涨到多少? 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/ |
12
acess OP @ragnaroks 你跑了多久?也许可以试试多加几个 s,跑个 20 分钟应该就可以看出来效果了—— ctfmon.exe 在任务管理器里的提交大小看上去并没有那么大,这个才是神奇的地方。
我是 16299.192 。 当然,也可能是我机器上有什么奇怪的东西吧…… |
13
acess OP @ragnaroks 还有,几年前就有人吐槽微软拼音输入法占内存,我用的是自带微软拼音测试的,说不定别的输入法就没这个问题。
|
15
acess OP @ragnaroks 试试多加几个 s,多跑一会,我这效果就蛮明显的。
换了另一台电脑,也是 Win10 1709,可以复现。 |
16
acess OP @zk8802 可以涨到超过 2GB。
WinDbg 调试还是太专业了,我只是外行……而且 VirtualAlloc 大概会被非常频繁地调用吧。 |
18
h4lbhg1G 2018-01-25 15:47:24 +08:00
System Commit 是说那个 4 号进程的 Commit Size 么?我这里是 2G 多。杀掉 ctfmon 似乎也没变化。不过这几天,开机搜狗输入法会让第一次输入的程序自己关闭掉,导致我一个月的 chrome 打开标签丢了。
|
19
acess OP @h4lbhg1G 就是点开 Procexp 工具栏上的统计图表,显示的整个系统的 System Commit。
拿身边另一台 Win10 1709 的电脑试了,也有类似现象。我觉得这很可能真的是 Win10 自带微软拼音的锅…… |
21
h4lbhg1G 2018-01-25 20:35:12 +08:00
@acess 刚刚发现 4 号进程 commit size 变成 20M 了,我这边是关掉 chrome 等后悔下降,但也不是马上,不知道怎么下降的。今天太冷了,明天虚拟机探索下。
|
23
acess OP @h4lbhg1G
嗯。 我不是给了个 AHK 脚本么?开个记事本,把输入法调到微软拼音,让脚本自动刷,就可以看到已提交内存在以肉眼可见的速度上涨了……一般跑个 20 分钟就挺明显了(可以让脚本多打几个 s,这样似乎涨得更快)。 我这是 16299.192 |
24
h4lbhg1G 2018-01-25 20:57:39 +08:00
@acess 我是身边的是 17074.1000 以及 16299.192. 那样的话记事本关掉呢?只有中文输入有么?日语如何?会不会是某种延迟释放?
|
25
h4lbhg1G 2018-01-26 12:34:46 +08:00
@acess 跑了 5 分钟,中途没有见到 Commit 增加(2 秒的刷新频率),倒是因为我后台在升级 17083 中途从 12.1GB 下降到了 10.1GB 了,系统升级好后我虚拟机再复现看看。
顺便问下,会不会是 Heisenbug,如果什么都不开,甚至连任务管理器 /PE 都不打开,直接跑 20 分钟,然后再杀 cftmon 也是这样么? 你的 Commit Size 增加是表现在 ctfmon 上么? 我的是这样 https://i.loli.net/2018/01/26/5a6aafc6675b8.png 然后我觉得这样刷,是对微软云输入法的一种关键词攻击啊,把网络断掉再刷。 |
26
h4lbhg1G 2018-01-26 13:37:53 +08:00 1
@acess 在 16299.192 上复现成功,1G 多,小狼毫输入法确实就没有这个现象。在删除那行文字的瞬间,内存就减少了,输入过程中增加,微软拼音一直在增加。
接下来我来调试下试试,cftmon 还好是当前用户执行的。 |
27
h4lbhg1G 2018-01-26 22:33:30 +08:00 1
我测试发现,写字板与记事本都是一样的效果。日语输入法也是这样,暂时还没测试英文输入法。虚拟机里面我没装 Office 没有 cftmon.exe 结果发现 ChsIME.exe 这个也是一样的。如图 https://i.loli.net/2018/01/26/5a6b3af5e26cc.png
现在在想如何才能用 Windows API 写一个程序可以达到这样的效果,也就是在 VMMap 里面出现几百兆到 1 吉的 Unusable 另外我发现一个细节,Unusable 即使超过 1GB,里面详情显示它全部是由是 40K 60k 等几个有限的碎片组成。 |