小编Sou*_*man的帖子

如何正确实现终结器以检测Java中的资源泄漏

假设我已经使用close()方法创建了一些用于清理资源的资源类,并且如果有人忘记调用close(),我想覆盖finalize()以释放资源(并打印警告).怎么能正确完成?

  • 是否仅推荐用于本机(JNI分配)资源?
  • 如果您使用对终结器中已完成的另一个对象的引用会发生什么?如果存在循环依赖关系,我不会看到垃圾收集器如何阻止您访问可能已执行终结器的对象.
  • 是否有更好的替代方法来覆盖finalize()以检测和/或处理资源泄漏?
  • 实施终结器时需要注意的其他任何陷阱?

注意:我知道使用finalize()通常是个坏主意,并且不能保证被调用,还有其他一些问题在讨论这个问题.这个问题具体是关于如何在Java中实现终结器,而不是为什么你应该(或不应该).

java resources garbage-collection finalizer

5
推荐指数
1
解决办法
379
查看次数

标签 统计

finalizer ×1

garbage-collection ×1

java ×1

resources ×1