栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

是否收集了Java DirectByteBuffer包装器垃圾?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

是否收集了Java DirectByteBuffer包装器垃圾?

在Sun
JDK中,由

java.nio.DirectByteBuffer
创建的
ByteBuffer#allocateDirect(int)
a具有类型字段
sun.misc.Cleaner
,该字段扩展为
java.lang.ref.PhantomReference

当此

Cleaner
(记住,是的子类型
PhantomReference
)被收集并即将移入关联时
ReferenceQueue
,通过嵌套类型运行的与集合相关的线程
ReferenceHandler
Cleaner
实例进行特殊处理:它向下转换并调用
Cleaner#clean()
,最终使它返回进行调用
DirectByteBuffer$Deallocator#run()
,依次进行调用
Unsafe#freeMemory(long)
。哇。

这相当circuit回,我很惊讶没有看到游戏中的任何使用

Object#finalize()
。Sun开发人员必须将其原因归结到更靠近收集和参考管理子系统的地方。

简而言之,

DirectByteBuffer
只要垃圾回收器有机会注意到这种放弃,并且其引用处理线程通过上述调用取得了进展,就不会因为放弃引用实例而耗尽内存。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/496615.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号