java – 涉及非保证析构函数的语言的非gced内存的语言绑定?
发布时间:2020-12-14 19:15:13 所属栏目:Java 来源:网络整理
导读:当有人从C库绑定到Java(或任何其他垃圾收集语言而没有保证运行的析构函数)时,它们如何处理非垃圾收集内存的正确释放? 编辑: 我正在考虑的事情(我知道这在我的原始问题中没有明确说明)是当一块非gced内存持有对其他非gced资源的引用时,当该对象需要被释放时
当有人从C库绑定到Java(或任何其他垃圾收集语言而没有保证运行的析构函数)时,它们如何处理非垃圾收集内存的正确释放? 编辑: 最佳答案
在java中,你有finalize()概念.你可以在那里释放C-memory.
但是,可能更好的方法是使用PhantomReferences和ReferenceQueue.您可以扩展PhantomReference类,使其保存一些id或指针或任何你需要释放的C端内存.当它在ReferenceQueue中排队时,您可以释放此id指向的C端内存 – 保证Java对象不再存在于“Java”中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |