Android NIO整理

1、ByteBuffer.allocate(capability):JVM堆内存,属于GC管辖范围,需要拷贝(内核空间—用户空间)速度相对较慢

2、ByteBuffer.allocteDirect(capability):直接内存(OS本地内存),不属于GC管辖范围,不需要内存拷贝,速度较快

3、直接内存的释放:

  • 申请直接内存时,会创建 DirectByteBuffer 对象(直接内存包装类),存放在JVM堆内存。
    适当的时候会被GC回收,该对象被回收前,会调用本地方法释放直接内存

  • DirectByteBuffer 持有一个Cleaner对象,该对象有一个 clean()方法,可用于释放本地内存

你可能感兴趣的:(Android基础知识体系)