刚刚写 JS 循环傻逼了,把 Chrome 玩死,内存吃满,只能关机重启

2016 年 3 月 14 日
 demo

首先我在这里,删除了代码里的 i++;

http://www.w3school.com.cn/tiy/t.asp?f=js_loop_for_cars

然后我调试自己的代码,直接 for (;i < _el.length;) { //其他代码 } ,也没有写 i++;, 然后就切换回编辑器继续写。

过了一会我发现 iStat MEM 条快满了,我没在意,我想可能是程序开太多了吧。

等我把 JS 代码写的差不多继续 Chrome 调试的时候。

咦!鼠标怎么不动了!
咦!!鼠标怎么变菊花了!!

11588 次点击
所在节点    JavaScript
36 条回复
chairuosen
2016 年 3 月 14 日
没听到 mac 起飞的声音?
bzw875
2016 年 3 月 14 日
如果经常写出死循环,就断点调试咯,免得浏览器死掉
wq2016
2016 年 3 月 14 日
@bzw875 说得对~
demo
2016 年 3 月 14 日
@chairuosen 没有听见 QwQ
@bzw875 今天脑抽了
zhouyg
2016 年 3 月 14 日
我偶尔也写个死循环,赶紧把 chrome 进程干掉就好了。没大碍
deadEgg
2016 年 3 月 14 日
原来 fir 也是这么玩死我机子的
上传个包,发现电脑死了.
联系客服,客服表示是 bug,不修

从此 fir 一生黑
kookxiang
2016 年 3 月 14 日
Chrome 运行 15 秒(也有可能是 30 秒,不记得了)左右会自动提示代码执行时间过长,是否终止的
demo
2016 年 3 月 14 日
@kookxiang 没有任何提示...
domty
2016 年 3 月 14 日
我以前也干过,貌似你把 chrome 进程杀掉就可以了。
js 好像是单线程操作的,这种循环基本上整张网页就啥都不干了。
xidianlz
2016 年 3 月 14 日
写写死循环没什么 执行了

rm -rf /

这个伟大的命令就开心了
kirisetsz
2016 年 3 月 14 日
@kookxiang Firefox 有… chrome 有没有呢?不记得了嘿嘿
jerray
2016 年 3 月 14 日
V8 不是有内存上限来着么
demo
2016 年 3 月 14 日
@domty 鼠标键盘全挂了
maplerecall
2016 年 3 月 14 日
之前 Chrome 控制台不小心写了个死循环没注意就放后台没管,放了一小时除了 CPU 风扇声音比较大没有任何问题…不过最后也只能直接杀将进程,整个控制台都未响应了…

考虑到我是 Windows 可能内存管理机制不太一样所以没问题吧
des
2016 年 3 月 14 日
while(true){};
也没死啊, 不知道你什么情况
decaywood
2016 年 3 月 14 日
command + q
bp0
2016 年 3 月 14 日
@des 应该是 @demo 死循环中的 //其他代码 搞的鬼。只要有点动态创建的东西,就会慢慢把内存占满的。不然一个死循环顶多把 CPU 占满的,不至于整个系统都挂掉的。
Neveroldmilk
2016 年 3 月 14 日
基本常识,三个空的 for 循环是自杀的最快道路。
zonghua
2016 年 3 月 15 日
我也写过一个死循环,是一个 timeout 函数。
vibbow
2016 年 3 月 15 日
#论 32 位浏览器的优势

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

https://study.congcong.us/t/263384

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

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

© 2021 V2EX