JVM堆内存OOM后其他线程是否还可以正常运行

2020-12-13 06:30

阅读:555

标签:曲线   new   mic   com   ace   ack   线程二   col   catch   

可以的,当一个线程出现OOM后,他占用内存资源会立马释放掉

public class JvmThread {

    public static void main(String[] args) {
        new Thread(() -> {
            Listbyte[]> list = new ArrayListbyte[]>();
            while (true) {
                System.out.println(new Date().toString() + Thread.currentThread() + "==");
                byte[] b = new byte[1024 * 1024 * 1];
                list.add(b);
                try {
                    Thread.sleep(1000);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();

        // 线程二
        new Thread(() -> {
            while (true) {
                System.out.println(new Date().toString() + Thread.currentThread() + "==");
                try {
                    Thread.sleep(1000);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
}

 

技术图片

。我们仔细观察一下在14:42:05~14:42:25之间曲线变化,你会发现使用堆的数量,突然间急剧下滑!这代表这一点,当一个线程抛出OOM异常后,它所占据的内存资源会全部被释放掉,从而不会影响其他线程的运行!

 

JVM堆内存OOM后其他线程是否还可以正常运行

标签:曲线   new   mic   com   ace   ack   线程二   col   catch   

原文地址:https://www.cnblogs.com/enhance/p/11099230.html


评论


亲,登录后才可以留言!