会造成什么损害?堆栈溢出错误 原因?
JVM 是否应该在 之后重新启动?堆栈溢出错误 ?
最佳答案
由于 SOE 是一个异步抛出的错误(OOME 是另一个例子),它可以在任何代码块的中间抛出,它可能会使对象处于不一致的状态。这对于锁抽象尤其明显——包括标准库中的锁类——可能会处于某种意外状态(例如,在没有所有者的情况下永久锁定)。
它不会破坏内部 JVM 状态,因此在 OOM 之后 VM 本身可以被认为是正常的,但应用程序和库级别的状态应该被认为是不一致的,除非相关代码经过精心设计以抵抗异步异常。
所以是的,除非专门设计用于处理这种情况,否则通常最好在遇到 SOE 后重新启动。
关于error-handling - JVM 是否应该在 StackOverflowError 上重述?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44759494/