Jas*_*n S 10 java nio bytebuffer
所以Java NIO架构师没有创建一个ByteBuffer接口,而是一个ByteBuffer类,它不是最终类,但它没有包 - 公共构造函数,因此它不能在其包之外进行子类化.阿福.:P
我有一个程序使用内存映射的文件字节缓冲区(通过FileChannel.map()获得)在一堆地方,我正在尝试追踪一个讨厌的错误,有问题的文件是打开的,因为有at至少一个ByteBuffer没有发布到垃圾收集.
我想创造一个InstrumentedByteBuffer看起来像一个字节的缓冲区类,但装饰定期ByteBuffer(或它的子类,例如MappedByteBuffer),并保持它的存在(包括创建新的缓冲区的赛道duplicate()和slice()) -这样我可以保持我的代码不变,使用ByteBuffer,我只需要修饰原始的字节缓冲区.
有没有办法做到这一点(通过反射或代理或其他)来绕过私人构造函数?我不需要将它发送到最终产品,我只需要暂时使用它来解决这个bug.
我正在尝试追踪一个令人讨厌的错误,其中有问题的文件保持打开状态,因为至少有一个 ByteBuffer 未释放到垃圾收集
这没有道理。未收集ByteBuffer不会阻止文件被关闭。你在这里咆哮错误的树。然而,存在一个众所周知的问题,即MappedByteBuffer它永远不会被垃圾收集,从而保持文件有效打开。这确实是一个设计问题:多年来人们都知道这个问题,但没有真正的解决方案。道德是不要使用大量的MappedByteBuffers.