【发布时间】:2013-03-06 04:02:08
【问题描述】:
这个简单的批处理文件以相对较短的顺序消耗了 Windows 7 (x64) 上的所有可用内存。这是怎么回事?有哪些预防措施可以预防?
any-invalid-command-you-like-here ^
显示效果的显然必要的先决条件:
- 插入符号
^是文件中的最后一件事,脚本不会以换行符终止 - 插入符号前面至少有 2 个空格或字符,例如如果下面的点代表空格,则不会触发内存泄漏
.^,而这个会触发..^(只是慢慢地)
在这个 Process Explorer 屏幕截图中,脚本已经运行了大约 30 秒,消耗了 2.9GB,并且还在以稳定的速度攀升:
如果您打算对此进行试验,请确保您可以访问关闭窗口 [X] 控件,或者启动任务管理器或进程资源管理器并准备好 Ctrl-C, Ctrl-Break、Alt-F4 无效。
似乎多个插入符号会导致内存使用量增加得更快。我第一次遇到这种情况时,在 1 或 2 分钟内没有足够的内存来执行简单的操作,例如 Alt-Tab 甚至是三指敬礼 Ctrl-Alt-Del 无效。我不得不硬关闭机器。
【问题讨论】:
-
不,我收到两条错误消息 (XP):
the following string is too long和syntax error(已翻译)。之后脚本终止。 -
我添加了标签:security,因为它可以被恶意使用,无需大惊小怪,让机器瘫痪。不确定这是否是对该标签的不当使用;如果是,请删除。
-
我可以想象地球上成千上万的人在同事的机器上运行它,当他们离开它解锁时......只需打开一个 cmd 窗口,执行,最小化窗口然后走开......
-
在 Windows 10 中修复。
标签: windows security batch-file cmd