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

2016-03-14 15:31:45 +08:00
 demo

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

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

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

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

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

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

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

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

rm -rf /

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

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

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

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

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

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

© 2021 V2EX