是否有任何替代概念来处理垃圾收集语言中的非托管资源?

时间:2013-11-05 16:04:44

标签: oop garbage-collection resource-management unmanagedresources

垃圾收集面向对象的编程语言自动回收未使用的内存,但所有其他类型的资源(即文件,套接字......)仍然需要手动释放,因为终结器不能被信任及时运行(或根本不运行)。

因此,这些资源对象通常提供某种“close” - 或“dispose” -method / pattern,这可能有问题,原因有很多:< / p>

    必须手动调用
  • Dispose ,如果不清楚何时需要释放资源,则可能会出现问题(类似于手动内存管理的问题)
  • 一次性模式有点“病毒”,因为每个包含一次性资源的类必须也是一次性以保证正确的资源清理
  • 一次性成员添加到类中,同时要求类成为一次性,更改类的接口和使用模式,从而破坏封装
  • 一次性模式会产生继承问题,即派生类是一次性,而基类不是

那么,是否存在适当释放此类资源的替代概念/方法?那个方向的任何论文/研究?

1 个答案:

答案 0 :(得分:-2)

一种方法(支持它的语言)是手动触发垃圾收集事件以使终结器运行。但是,某些语言(如Java)无法提供可靠的机制。