性能问答>为什么DirectByteBuffer没有被GC回收?>
1回复

为什么DirectByteBuffer没有被GC回收?


public class DirectMemoryTest {
    public static void main(String[] args) {
        ByteBuffer byteBuffer = ByteBuffer.allocateDirect(1024);
        Object obj = new Object();
        obj = null;
        byteBuffer = null;
        //Full GC (System.gc()),obj被回收,byteBuffer不会被回收
        System.gc();
        System.out.println(byteBuffer);
    }
}

可以看到full gc日志.Object被回收,DirectByteBuffer却不能被回收.是哪方面原因呢?JNI,虚引用?还是JVM有什么不为人知的处理。

2958 阅读
请先登录,查看1条精彩评论吧
快去登录吧,你将获得
  • 浏览更多精彩评论
  • 和开发者讨论交流,共同进步