因此,Java NIO的架构师们没有创建一个
我有一个程序,在很多地方使用内存映射文件字节缓冲区(通过FileChannel.map()获得),我正在尝试查找一个令人讨厌的错误,即由于至少有一个未释放到垃圾收集器的
我想创建一个
是否有任何方法(通过反射或代理或其他方式)绕过私有构造函数来实现这一点?我不需要将其发布到最终产品中,我只需要暂时使用它来解决这个错误。
ByteBuffer
接口,而是创建了一个ByteBuffer
类,它不是一个final类,但它没有公共包构造函数,因此它不能在其包之外被子类化。糟糕。:P我有一个程序,在很多地方使用内存映射文件字节缓冲区(通过FileChannel.map()获得),我正在尝试查找一个令人讨厌的错误,即由于至少有一个未释放到垃圾收集器的
ByteBuffer
而导致相关文件未关闭。我想创建一个
InstrumentedByteBuffer
类,它看起来像一个字节缓冲区,但装饰一个常规的ByteBuffer
(或其子类,如MappedByteBuffer
),并跟踪其存在(包括由duplicate()
和slice()
创建的新缓冲区)--这样我可以保持我的代码不变,只需要装饰原始的字节缓冲区。是否有任何方法(通过反射或代理或其他方式)绕过私有构造函数来实现这一点?我不需要将其发布到最终产品中,我只需要暂时使用它来解决这个错误。
YourKit
这样的工具,带有内存调试器和探针,是否能够帮助您追踪到那个游离的对象(我经常使用YourKit
,但从未遇到过这样的问题需要调试)。 - NPEFileChannel.map()
,所以您需要以某种方式诱导后者创建您的类的实例,是吗? - NPE