怎样写一个程序迅速地让 JVM 崩溃 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
huweic
V2EX    Java

怎样写一个程序迅速地让 JVM 崩溃

  •  
  •   huweic 2018-03-20 10:54:50 +08:00 6999 次点击
    这是一个创建于 2765 天前的主题,其中的信息可能已经有所发展或是发生改变。
    35 条回复    2018-04-05 21:14:00 +08:00
    madNeal
        1
    madNeal  
       2018-03-20 11:03:48 +08:00 via Android
    疯狂占内存
    GuuJiang
        2
    GuuJiang  
       2018-03-20 11:04:36 +08:00 via iPhone
    JNI,然后 native 代码里访问空指针
    notreami
        3
    notreami  
       2018-03-20 11:14:17 +08:00
    System.exit(1);
    非正常推出,不用那么复杂吧?
    RubyJack
        4
    RubyJack  
       2018-03-20 11:27:00 +08:00
    循环里一直 new
    lihongjie0209
        5
    lihongjie0209  
       2018-03-20 11:29:43 +08:00
    递归 了解一下
    lihongjie0209
        6
    lihongjie0209  
       2018-03-20 11:34:26 +08:00
    ```
    public class test {

    public static void main(String[] args) {
    long sum = sum(1, 100000);

    System.out.println(sum);
    }


    public static long sum(int start, int end) {

    System.out.println("sum is called!!");

    if (start == end) {
    return start;
    }else{

    return sum(start, end - 1) + end;


    }



    }
    }



    sum is called!!
    sum is called!!
    sum is called!!
    Exception in thread "main" java.lang.StackOverflowError
    at java.io.PrintStream.write(PrintStream.java:526)
    at java.io.PrintStream.print(PrintStream.java:669)
    at java.io.PrintStream.println(PrintStream.java:806)
    at test.sum(test.java:12)
    at test.sum(test.java:18)
    at test.sum(test.java:18)


    ```
    stanjia
        7
    stanjia  
       2018-03-20 11:36:08 +08:00
    楼主想哪 JVM 的哪块儿崩溃? 是栈还是堆,还是其它的常量区?
    lhx2008
        8
    lhx2008  
       2018-03-20 11:48:24 +08:00 via Android   4
    栈溢出 无限递归
    堆溢出 塞对象过 jvm 内存 max 值
    方法区溢出 动态生成类(有点麻烦)
    ho121
        9
    ho121  
       2018-03-20 12:28:04 +08:00 via Android
    1/0
    vegito2002
        10
    vegito2002  
       2018-03-20 12:42:15 +08:00 via iPad   2
    爆栈爆堆这些 exception 不算 crash, 不要混淆这个概念;

    这个帖子里有具体的讨论:
    https://stackoverflow.com/questions/65200/how-do-you-crash-a-jvm
    huweic
        11
    huweic  
    OP
       2018-03-20 12:53:07 +08:00
    @vegito2002 哈哈,我就是看了 stackoverflow 这个问题才发的这个帖子,想跟大家讨论一下
    huweic
        12
    huweic  
    OP
       2018-03-20 12:53:53 +08:00
    @stanjia 都可以啊,炸了就行
    huweic
        13
    huweic  
    OP
       2018-03-20 12:57:07 +08:00
    @ho121 这个应该只是算异常,JVM 并没有崩溃,catch 一下就能继续跑了
    lovelybear
        14
    lovelybear  
       2018-03-20 13:02:07 +08:00 via Android
    死循环
    Len1133
        15
    Len1133  
       2018-03-20 13:38:31 +08:00
    拔插头
    qwertty01
        16
    qwertty01  
       2018-03-20 13:56:32 +08:00
    如何写个软件让 windows 奔溃?
    ovear
        17
    ovear  
       2018-03-20 14:00:03 +08:00
    jni,然后写点越界。
    lastpass
        18
    lastpass  
       2018-03-20 14:19:02 +08:00 via Android
    你可以试着通过 JAVA 调用错误的 dll。
    JVM 必崩
    为什么我知道?
    因为我这里有一个 JAVA 程序就是通过调用 dll 进行授权的。
    经常性崩溃。
    从头崩到尾。
    无论我写啥异常处理办法都没用。
    ly529
        19
    ly529  
       2018-03-20 15:48:42 +08:00
    while(true)
    Amayadream
        20
    Amayadream  
       2018-03-20 15:55:48 +08:00
    @vegito2002 #10 你这个链接有点赛艇
    huweic
        21
    huweic  
    OP
       2018-03-20 16:25:49 +08:00
    @qwertty01 求教
    wweir
        22
    wweir  
       2018-03-20 17:54:15 +08:00 via Android
    给自己的 pid 发个 kill 信号,算么?
    Zz0Zz
        23
    Zz0Zz  
       2018-03-20 18:01:04 +08:00
    写个死循环,每次放 1million 大对象,立马把你的 jvm 干爆
    zengmingyang96
        24
    zengmingyang96  
       2018-03-20 18:10:28 +08:00 via Android
    @lihongjie0209 这个 error 是可以捕获的
    lihongjie0209
        25
    lihongjie0209  
       2018-03-20 18:12:47 +08:00
    @zengmingyang96 #24 捕获 error 干嘛
    zengmingyang96
        26
    zengmingyang96  
       2018-03-20 18:15:30 +08:00
    @lihongjie0209
    如果 try catch 了,JVM 不会崩溃啊。。。
    stanjia
        27
    stanjia  
       2018-03-20 19:32:28 +08:00
    这里关键是要 通过 -Xss256m -Xms512m -Xmx800m -XX:MaxPermSize=512m 等,把虚拟机内存设置成 1MB 或者更小,不然,默认设置的情况下,你想让 java 不管哪块儿爆掉 还是有点难
    fork
        28
    fork  
       2018-03-20 19:38:04 +08:00
    kill -4 java_process_pid
    applehater
        29
    applehater  
       2018-03-20 20:28:39 +08:00 via iPhone
    JNA 随便写一下就会错了。
    zk123
        30
    zk123  
       2018-03-20 21:03:57 +08:00 via Android
    for(int i=0; i < 3 ; i ++){
    System.out.println("我是帅哥");
    }
    opengps
        31
    opengps  
       2018-03-21 08:42:56 +08:00
    这是要埋个雷,作为后期付费改善功能?
    owenliang
        32
    owenliang  
       2018-03-21 10:15:14 +08:00 via Android
    递归导致栈溢出最快。
    fancyhan
        33
    fancyhan  
       2018-03-21 10:19:30 +08:00
    @stanjia 阁下是高手
    springGun
        34
    springGun  
       2018-03-21 10:38:12 +08:00
    实战 java 虚拟机 上全是案例 ,所有你想 OOM 的 JVM 区域都有
    Fri
        35
    Fri  
       2018-04-05 21:14:00 +08:00
    int[] arr = new int[999999999^999999999];
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1171 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 23:29 PVG 07:29 LAX 16:29 JFK 19:29
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86