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

java – 我如何子类化ByteBuffer?

发布时间:2020-12-14 16:30:06 所属栏目:Java 来源:网络整理
导读:因此,Java NIO架构师没有创建一个ByteBuffer接口,而是一个 ByteBuffer class,它不是一个最终的类,但它没有包公共构造函数,因此它不能在其包之外被子类化.阿福. :P 我有一个程序,使用内存映射文件字节缓冲区(通过FileChannel.map()获得)在一堆的地方,我正在
因此,Java NIO架构师没有创建一个ByteBuffer接口,而是一个 ByteBuffer class,它不是一个最终的类,但它没有包公共构造函数,因此它不能在其包之外被子类化.阿福. :P

我有一个程序,使用内存映射文件字节缓冲区(通过FileChannel.map()获得)在一堆的地方,我正在尝试追踪一个讨厌的错误,在该文件的问题是保持打开,因为有至少一个不被释放到垃圾回收的ByteBuffer.

我想创建一个看起来像字节缓冲区的InstrumentedByteBuffer类,但是装饰一个常规的ByteBuffer(或它的子类,例如MappedByteBuffer),并跟踪它的存在(包括由duplicate()和slice()创建的新缓冲区) – 方式我可以保持我的代码完整,使用ByteBuffer,我只需要装饰原始的字节缓冲区.

有没有办法通过反思或代理或任何方式来绕过私人构造函数?我不需要将其运送到最终产品中,我只需要暂时使用它来解决这个错误.

解决方法

I’m trying to track down a nasty bug where the file in question is
left open because there is at least one ByteBuffer that isn’t released
to garbage collection

这没有道理.未收到的ByteBuffer将不会阻止文件被关闭.你正在树上错误的树.然而,MappedByteBuffer有一个众所周知的问题,从而不会垃圾回收,保持文件的有效打开.这真的是一个设计问题:它已经知道了多年,但没有真正的解决方案.道德是不要使用大量的MappedByteBuffers.

(编辑:李大同)

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

    推荐文章
      热点阅读