我明白,当一个直接的缓冲区被分配,它不受垃圾回收,但我想知道的是,如果包装对象是垃圾回收。例如,如果我分配了一个新的DirectByteBuffer dbb,然后使用dbb.duplicate()复制(浅拷贝)它,我会在同一块内存中创建两个包装。是否收集Java DirectByteBuffer包装垃圾?
这些包装是否被垃圾收集?如果我没有
while(true){
DirectByteBuffer dbb2 = dbb.duplicate();
}
我最终会OOM自己吗?
其实,一个DirectByteBuffer和它的本地内存_might_可能被垃圾收集。它使用PhantomReference来释放本机分配的内存。 –