StackOverflowError 会造成什么损害? 是否应在 StackOverflowError ?
之后重新启动JVM答案 0 :(得分:1)
由于SOE是一个异步抛出的错误(OOME是另一个例子),它可以在任何代码块的中间抛出,它可能会使对象处于不一致状态。锁定抽象(包括标准库中的锁类)可能会在某种意外状态下(例如,在没有所有者的情况下永久锁定),这一点尤为明显。
它不会破坏内部JVM状态,因此在OOM之后VM本身可以被认为是有效的,但应该认为应用程序和库级别状态不一致,除非有问题的代码经过精心设计以抵抗异步异常。
所以是的,除非专门设计用于处理这种情况,否则通常最好在遇到SOE后重启。