我已经编程很长时间了,我看到的程序,当内存不足时,会尝试清理并退出,即优雅地失败。我不记得上次看到有人真正尝试恢复并继续正常运行是什么时候了。
如此多的处理依赖于能够成功分配内存,尤其是在垃圾收集语言中,似乎内存不足错误应该被归类为不可恢复的。 (不可恢复的错误包括堆栈溢出之类的错误。)
使其成为可恢复错误的令人信服的论据是什么?
这实际上取决于您正在构建的内容。
对于网络服务器来说,一个请求/响应对失败但随后继续处理进一步的请求并不是完全不合理的。然而,您必须确保单一故障不会对全局状态产生有害影响 - 这将是棘手的一点。鉴于故障会在大多数托管环境(例如 .NET 和 Java)中导致异常,我怀疑如果在“用户代码”中处理异常,则它将可以为将来的请求恢复 - 例如如果一个请求尝试分配 10GB 内存但失败,则不会损害系统的其余部分。然而,如果系统在尝试将请求交给用户代码时内存不足,那么这种情况可能会更糟糕。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)