如何添加一个安全防护来释放本应由客户端代码显式释放的资源

时间:2011-06-01 12:39:29

标签: java garbage-collection finalizer

用户应该调用Player.close()来释放由本机代码管理的一些关键资源,并杀死为播放器对象创建的几个内部java线程。但是,用户无法调用它,导致一些资源泄漏。添加Finalize方法将不起作用,因为不会调用finalize,因为内部线程尚未被杀死...

我们应该如何处理这种情况?

编辑:

我将看看幽灵参考。此外,我不应该终止那些聚合线程,以便玩家对象有资格获得gc吗?

2 个答案:

答案 0 :(得分:2)

使内部线程仅保留对这些内容的弱引用。

也许考虑学习虚拟参考。

答案 1 :(得分:2)

我仍然认为finalize是唯一可行的方法,但你必须使用一些精心设置的弱引用来给GC一个机会。