error-handling - JVM 是否应该在 StackOverflowError 上重述?

标签 error-handling jvm stack-overflow

会造成什么损害?堆栈溢出错误 原因?
JVM 是否应该在 之后重新启动?堆栈溢出错误 ?

最佳答案

由于 SOE 是一个异步抛出的错误(OOME 是另一个例子),它可以在任何代码块的中间抛出,它可能会使对象处于不一致的状态。这对于锁抽象尤其明显——包括标准库中的锁类——可能会处于某种意外状态(例如,在没有所有者的情况下永久锁定)。

它不会破坏内部 JVM 状态,因此在 OOM 之后 VM 本身可以被认为是正常的,但应用程序和库级别的状态应该被认为是不一致的,除非相关代码经过精心设计以抵抗异步异常。

所以是的,除非专门设计用于处理这种情况,否则通常最好在遇到 SOE 后重新启动。

关于error-handling - JVM 是否应该在 StackOverflowError 上重述?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44759494/

相关文章:

iphone - Apple Mach-O 链接器错误 (APActivityIcon)

error-handling - 接受 Result<T, E> 作为函数参数是惯用的 Rust 吗?

java - 暂停 Java 应用程序

c - setcontext() 中的 Stackoverflow

c++ - 如何在函数中执行 if 语句?

error-handling - 无法模拟 MQ 原因码 2009

python - 使用 ldap 在 python 中处理错误

java - 如何以编程方式检查分配给 JVM 的 RAM 量?

java - 处理 JNI 崩溃

java - 为什么更改代码中的一行会导致堆栈溢出?