加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 涉及非保证析构函数的语言的非gced内存的语言绑定?

发布时间:2020-12-14 19:15:13 所属栏目:Java 来源:网络整理
导读:当有人从C库绑定到Java(或任何其他垃圾收集语言而没有保证运行的析构函数)时,它们如何处理非垃圾收集内存的正确释放? 编辑: 我正在考虑的事情(我知道这在我的原始问题中没有明确说明)是当一块非gced内存持有对其他非gced资源的引用时,当该对象需要被释放时

当有人从C库绑定到Java(或任何其他垃圾收集语言而没有保证运行的析构函数)时,它们如何处理非垃圾收集内存的正确释放?

编辑:
我正在考虑的事情(我知道这在我的原始问题中没有明确说明)是当一块非gc’ed内存持有对其他非gc’ed资源的引用时,当该对象需要被释放时释放.例如,如果你有一个非gc’ed链表节点,这是一个很长的这类节点列表的头部,你想让gc系统最终自动清理它,你如何设置它?

最佳答案
在java中,你有finalize()概念.你可以在那里释放C-memory.

但是,可能更好的方法是使用PhantomReferences和ReferenceQueue.您可以扩展PhantomReference类,使其保存一些id或指针或任何你需要释放的C端内存.当它在ReferenceQueue中排队时,您可以释放此id指向的C端内存 – 保证Java对象不再存在于“Java”中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读