【发布时间】:2010-12-23 16:30:38
【问题描述】:
我有一个内存泄漏,我已将其隔离到错误处置的直接字节缓冲区。
ByteBuffer buff = ByteBuffer.allocateDirect(7777777);
GC 收集包含这些缓冲区的对象,但不处理缓冲区本身。如果我实例化足够多的包含缓冲区的瞬态对象,我会收到这样令人鼓舞的消息:
java.lang.OutOfMemoryError: 直接缓冲内存
我一直在寻找这个问题,显然
buff.clear();
和
System.gc();
不工作。
【问题讨论】:
-
您确定没有其他东西持有对此 ByteBuffer 的引用吗?
-
是的,我很确定,我实例化了方法级别的类,这些类在方法完成调用后立即保存超出范围的缓冲区。
标签: java memory-leaks buffer bytebuffer