首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java中的引用计数

Java中的引用计数
EN

Stack Overflow用户
提问于 2010-10-17 19:05:26
回答 1查看 6.8K关注 0票数 11

我有一个系统,它不断地耗尽磁盘空间,因为垃圾收集器没有足够快地释放保存文件句柄的对象。(文件一直在创建和删除,但由于进程仍有一个打开的文件句柄,因此操作系统将其保留在磁盘上)。

这些对象是共享的,所以简单的try { ... } finally { close(); }是不行的。

在我看来,我最好的选择是在对象上实现引用计数,并在引用计数为0时关闭文件句柄。然而,我不愿意自己实现它,因为我怀疑关于并发性有一些微妙的问题。

遗憾的是,在谷歌上搜索“在java中引用计数”并没有带来任何有用的结果。所以我的问题是:是否有任何资源(文章、示例代码、库)可以帮助实现引用计数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-17 19:29:35

不要依赖垃圾收集器。它被故意设计成不可靠的。

如果“共享”意味着你在代码中的几个地方使用它,所以你不能只是关闭它,我建议你修改你的代码,让它有一个集中的文件池,在那里你可以“签出”一个在本地代码中使用的文件句柄。然后,close()过程将文件句柄返回给池。跟踪您的句柄,当给定文件的所有句柄都返回到池中时,您将永久关闭该文件。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3952930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档