V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
demo
V2EX  ›  JavaScript

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

  •  
  •   demo · 2016-03-14 15:31:45 +08:00 · 10886 次点击
    这是一个创建于 3212 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

    rm -rf /

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

    考虑到我是 Windows 可能内存管理机制不太一样所以没问题吧
    des
        15
    des  
       2016-03-14 21:17:11 +08:00
    while(true){};
    也没死啊, 不知道你什么情况
    decaywood
        16
    decaywood  
       2016-03-14 21:23:04 +08:00
    command + q
    bp0
        17
    bp0  
       2016-03-14 21:39:09 +08:00
    @des 应该是 @demo 死循环中的 //其他代码 搞的鬼。只要有点动态创建的东西,就会慢慢把内存占满的。不然一个死循环顶多把 CPU 占满的,不至于整个系统都挂掉的。
    Neveroldmilk
        18
    Neveroldmilk  
       2016-03-14 22:46:34 +08:00
    基本常识,三个空的 for 循环是自杀的最快道路。
    zonghua
        19
    zonghua  
       2016-03-15 00:12:37 +08:00
    我也写过一个死循环,是一个 timeout 函数。
    vibbow
        20
    vibbow  
       2016-03-15 02:03:00 +08:00
    #论 32 位浏览器的优势
    jsoh
        21
    jsoh  
       2016-03-15 09:33:42 +08:00
    我也手贱了,不过只有当前窗口死掉了!
    Haku
        22
    Haku  
       2016-03-15 09:45:20 +08:00
    chrome 的内存占用简直让人无语, 8g 内存经常被吃到只剩 2g ,连个 dota2 和 Chrome 同开都会卡
    haoxiaolei
        23
    haoxiaolei  
       2016-03-15 09:53:01 +08:00
    冬天天冷时候经常这么干。
    Vonex
        24
    Vonex  
       2016-03-15 10:15:14 +08:00
    不能强退吗
    flowfire
        25
    flowfire  
       2016-03-15 10:24:55 +08:00
    @Vonex 占满内存和 cpu 没法强退
    flowfire
        26
    flowfire  
       2016-03-15 10:25:17 +08:00
    @kookxiang 时间过长提示是否结束的是火狐。。。。 chrome 没有
    TakanashiAzusa
        27
    TakanashiAzusa  
       2016-03-15 10:31:59 +08:00
    windows 下可以停止当前进程,不至于全死了。。但是不知道 mac 什么情况。。
    wweir
        28
    wweir  
       2016-03-15 12:24:38 +08:00
    @xidianlz 新一点系统,这命令已经没什么危险性了,要加一个挺长的参数跳过安全模式才让执行
    hst001
        29
    hst001  
       2016-03-15 13:12:33 +08:00
    @Haku 我也经常同开,但是不会卡
    reverland
        30
    reverland  
       2016-03-15 16:17:46 +08:00
    firefox 有长时间无响应提醒,但并不代表就不会过热关机。。
    Lpl
        31
    Lpl  
       2016-03-15 18:54:22 +08:00
    @xidianlz 哈哈,那天手贱的把公司服务器 var/lib 目录给 rm -rf 了。。。运维说你咋不直接在根目录下执行
    Khlieb
        32
    Khlieb  
       2016-03-15 19:05:44 +08:00 via Android
    玩脱了
    allenx
        33
    allenx  
       2016-03-15 19:14:26 +08:00
    楼主是单核机器?
    xidianlz
        34
    xidianlz  
       2016-03-16 10:09:55 +08:00
    @wweir 这样 f 参数岂不是表示没用了
    @Lpl rm 之前看一看啊 之前删过自己机器上的用户目录,从此 rm 被 alias 成了 mv
    wweir
        35
    wweir  
       2016-03-16 10:54:41 +08:00
    @xidianlz f 针对这条命令,确实没用了
    xidianlz
        36
    xidianlz  
       2016-03-16 11:15:20 +08:00
    @wweir
    f : 没想到你是这样的 rm ,你让我 f 的脸往哪放
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2608 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:20 · PVG 18:20 · LAX 02:20 · JFK 05:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.