我明白,當一個直接的緩衝區被分配,它不受垃圾回收,但我想知道的是,如果包裝對象是垃圾回收。例如,如果我分配了一個新的DirectByteBuffer dbb,然後使用dbb.duplicate()複製(淺拷貝)它,我會在同一塊內存中創建兩個包裝。是否收集Java DirectByteBuffer包裝垃圾?
這些包裝是否被垃圾收集?如果我沒有
while(true){
DirectByteBuffer dbb2 = dbb.duplicate();
}
我最終會OOM自己嗎?
其實,一個DirectByteBuffer和它的本地內存_might_可能被垃圾收集。它使用PhantomReference來釋放本機分配的內存。 –