language-agnostic - "Out Of Memory"是可恢复的错误吗?

标签 language-agnostic exception memory memory-management error-recovery

我已经编程了很长时间,当我看到的程序内存不足时,它们会尝试清理并退出,即优雅地失败。我不记得上一次看到有人真正尝试恢复并继续正常运行是什么时候了。

如此多的处理依赖于能够成功分配内存,尤其是在垃圾收集语言中,似乎内存不足错误应该归类为不可恢复。 (不可恢复的错误包括堆栈溢出等。)

使它成为可恢复错误的有力论据是什么?

最佳答案

这真的取决于你正在构建什么。

对于一个网络服务器来说,一个请求/响应对失败但随后继续处理更多请求并不是完全不合理的。但是,您必须确保单个故障不会对全局状态产生不利影响——这将是一个棘手的问题。鉴于在大多数托管环境(例如 .NET 和 Java)中失败会导致异常,我怀疑如果异常是在“用户代码”中处理的,它将可以为将来的请求恢复 - 例如如果一个请求试图分配 10GB 内存但失败了,那不应该损害系统的其余部分。但是,如果系统在尝试将请求移交给用户代码时内存不足 - 这种事情可能更糟糕。

关于language-agnostic - "Out Of Memory"是可恢复的错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/333736/

相关文章:

math - float 学有问题吗?

string - 我可以使用什么算法来确定两个文档中是否出现任意 n 个单词序列?

ios - Swift 中的“NSInternalInconsistencyException”

linux - 试图捕获 Linux 机器上的所有内存读/写

浮点减法恒等式

design-patterns - 在应用程序中推送数据更改与拉取数据更改

c# - 为 System.NotImplementedException/System.NotSupportedException 编写单元测试是一种好习惯吗

c# - 在 C# 中避免 Azure DocumentDB 中的任务取消异常

c++ - 我如何在此功能中释放内存?

iOS AVCaptureVideoDataOutput 占用太多内存