为什么我的代码导致OOM并退出JVM,但我却看不到JVM崩溃日志(hs_err_pid)

我希望代码使JVM退出并崩溃,并且我看到JVM退出,但是我没有看到JVM崩溃日志(hs_err_pid)和命令“ sudo egrep -i'java'/ var / log / messages “没有任何消息,所以它不是Linux杀死进程。但是我可以看到消息“进程以退出代码1完成”,所以问题是使jvm退出的原因

以开头: java -Xmx50M -Xms50M -XX:ErrorFile = / home / wks / javacode / java_error.log -XX:+ PrintGCDetails -XX:+ PrintGCTimeStamps -XX:+ PrintGCDateStamps -Xloggc:/home/wks/javacode/gc.log >

import java.util.ArrayList;
import java.util.List;



public class MakeVmAbort {

    static List<Thread> ts = new ArrayList<>();

    static List<byte[]> bs = new ArrayList<>();

    public static void main(String[] args) {

        try {
            while (true) {
                Thread t = new Thread(() -> {
                    while (true) {
                        bs.add(new byte[1024 * 1024]);
                        try {
                            Thread.sleep(500L);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                });
                t.start();
                ts.add(t);
            }

        } catch (Exception e) {
            System.out.println(e.getStackTrace());
        }
    }

}

a793358269 回答:为什么我的代码导致OOM并退出JVM,但我却看不到JVM崩溃日志(hs_err_pid)

JVM退出是因为主线程抛出OOM,所以当最后一个非守护进程线程完成时,JVM退出了, 感谢@apangin

本文链接:https://www.f2er.com/3150949.html

大家都在问