DirectBuffer的内存由操作系统分配,回收的时候呢?

ByteBuffer writeBuffer = ByteBuffer.allocateDirect(bytes.length);
阅读 3.8k
2 个回答

DirectByteBuffer里有个cleaner,回收的时候就是调用这个cleaner的clean()方法的,gc会用这个cleaner来回收的,虽然不是回收到Java的堆里

分配和回收的实现就是调用Unsafe的allocateMemory和freeMemory,里面其实就是系统调用malloc和free

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题