allocate()
产生的是HeapByteBuffer
的实例, 本质上是一个no direct buffer
, allocateDirect()
产生的是DirectByteBuffer
的实例, 本质是一个direct buffer
- 主要区别
-
buffer
的创建方式不同,no direct buffer
还可以通过封装已存在的byte array
来产生 - 执行IO操作时不同,
no direct buffer
会将自己复制到中间buffer
中, 而direct buffer
不会 -
no direct buffer
分配在heap
上, 而direct buffer
分配在直接内存中, 并不在JVM
虚拟机中
-