当前位置: 首页 > 知识库问答 >
问题:

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

梁韬
2023-03-14

我期望代码使JVM退出并崩溃,我看到了JVM退出,但是我没有看到JVM崩溃日志(hs_err_pid ),命令“sudo egrep-I ' Java '/var/log/messages”没有任何消息,所以不是linux终止了进程。但是我可以看到消息“进程结束,退出代码为1 ”,所以问题是什么使jvm退出

开头为:Java-xmx 50m-xms 50m-XX:error file =/home/wks/javacode/Java _ error . log-XX:PrintGCDetails-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());
        }
    }

}

共有1个答案

吕胤
2023-03-14

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

 类似资料:
  • 问题内容: 当我退出“活动”退出(通过“后退”按钮)时,我的应用程序崩溃。据我所知,这是在Android代码库中发生的,而不是我的,但是我并不完全相信。 这是来自adb的stacktrace: 有人有什么想法/建议吗? 问题答案: 无助,因为没有代码。还在看 造成原因:android.app.Activity.performStop(Activity.java:3575)上的java.lang.N

  • 在非gui模式下使用Jmeter 3.3进行分布式测试的过程中,我得到的错误是,如何修复此问题: 我在主机器和从机器上使用相同版本的JMeter和JDK。 JVM应该已经退出,但没有退出。以下非守护进程线程仍在运行(DestroyJavaVM正常):线程[main,5,main],

  • JVM不时会奇怪地崩溃。JVM崩溃日志中有问题的帧是libzip.so,error是sigsegv。这在Tomcat7和JDK7中发生 下面是堆栈跟踪以供参考: 堆栈:[0x00007F68B999C000,0x00007F68B9A9D000],SP=0x00007F68B9A99770, 可用空间=1013k本机帧:(J=编译的Java代码,J=解释的,VV=VM代码,C=本机代码)C[lib

  • 问题内容: JVM崩溃中的日志文件包含各种有用的调试信息,例如加载的共享库和完整的环境。我可以强制JVM以编程方式生成其中之一吗?通过执行使它崩溃的代码还是其他方式?或者以另一种方式访问​​相同的信息? 问题答案: 您可以尝试抛出OutOfMemoryError并添加-XX:+ HeapDumpOnOutOfMemoryError jvm参数。从1.6开始,这是新功能,而McDowell建议使用其

  • 在非gui模式下使用JMeter执行脚本和远程测试时,我会收到错误消息,如何解决该问题

  • 尝试执行以下代码 JVM崩溃,错误日志如下