六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 41|回复: 0

诡异的JVM Crash之EXCEPTION_STACK_OVERFLOW

[复制链接]

升级  62%

7

主题

7

主题

7

主题

童生

Rank: 1

积分
31
 楼主| 发表于 2013-1-24 21:16:00 | 显示全部楼层 |阅读模式
诡异的JVM CrashEXCEPTION_STACK_OVERFLOW

关于JVM的一个常识是:如果对象被意外地持有很容易造成内存泄漏,而如果同时又在不停地生成新对象,就有很大的机率造成内存溢出。通常情况下,这种溢出会导致JVM抛出OutOfMemoryError,然后JVM挂起。
可是来试试下面的代码,真是让人有点诧异,分别在JDK1.4JDK5JDK6上都表现一致。
package crash;

public class JVMCrashTest {


    public static void main(String[] args) {

        try {

            testCrash();

        } catch (Throwable t) {

            t.printStackTrace();

            System.out.println("catch an exception! I'm dead!");

        }

    }


    /**

     * JVM挂掉,core dump

     */

    static void testCrash() {

        Object[] o = null;

        int line = 0;

        while (true) {

            o = new Object[] { o };

            line++;

            if (line % 1000 == 0) {

                System.out.println(line);

            }

        }

    }


}
没有机会抓异常JVM直接CrashWindows上会有hs_err日志产生,好一个EXCEPTION_STACK_OVERFLOWLinux上面连日志都没有,直接segment fault
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表