是否应在StackOverflowError上重述JVM?

时间:2017-06-26 12:14:52

标签: error-handling jvm stack-overflow

StackOverflowError 会造成什么损害? 是否应在 StackOverflowError

之后重新启动JVM

1 个答案:

答案 0 :(得分:1)

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

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

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