gpt4 book ai didi

java - 发生 OutOfMemoryError 时 Java 进程的行为

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:34:59 25 4
gpt4 key购买 nike

Java 程序在获取 OutOfMemoryError 时的行为是什么? .是否有任何定义的行为?进程会崩溃还是会进入等待/hibernate 状态?

更新:如果我没有在我的代码中处理它?<​​/p>

最佳答案

并且 OutOfMemoryError 的处理方式与任何其他异常一样:

  • 如果它被捕获,则不会再发生任何事情。
  • 如果未被捕获,则 threadsthreads groups未捕获的异常处理程序处理它。这几乎总是导致线程停止。

但是有两个因素在其他异常中并不存在:

  • OutOfMemoryError 是一个 Error而不是 Exception .这意味着它极不可能在任何地方被捕获:你不应该 try catch 一个Error一般(除了极少数异常(exception))并且通常不会这样做,所以有机会它被处理的数量相当少。
  • OutOfMemoryError 发生并且没有对象因此符合 GC 条件时,您将仍然剩下很少的内存,并且您很可能会遇到稍后再次出现完全相同的问题。

如果发生这种情况的线程是唯一的非守护线程(通常,但不一定是执行 main 方法的主线程),那么该线程被杀死会导致整个 JVM 关闭(这通常被认为是“崩溃”)。

所以 tl;dr 是:它可能会杀死线程,如果内存问题没有解决,那么这可能会发生在越来越多的线程上.

关于java - 发生 OutOfMemoryError 时 Java 进程的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7606953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com