面试题答案
一键面试创建直接缓冲区的方法
在Java NIO中,可以通过调用 ByteBuffer
的静态方法 allocateDirect(int capacity)
来创建直接缓冲区。示例代码如下:
import java.nio.ByteBuffer;
public class DirectBufferExample {
public static void main(String[] args) {
ByteBuffer directBuffer = ByteBuffer.allocateDirect(1024);
}
}
与非直接缓冲区在创建方式上的主要区别
- 非直接缓冲区:通过调用
ByteBuffer
的静态方法allocate(int capacity)
创建,例如ByteBuffer buffer = ByteBuffer.allocate(1024);
。非直接缓冲区的数据存放在JVM堆内存中,由JVM的垃圾回收机制管理。 - 直接缓冲区:通过
allocateDirect(int capacity)
创建。直接缓冲区的数据存放在堆外内存(直接内存),不在JVM堆中,不受JVM垃圾回收机制直接管理。创建直接缓冲区时,系统会在直接内存中分配空间,减少了数据从JVM堆内存到直接内存的复制操作,对于频繁的I/O操作,能提高性能,但创建和销毁直接缓冲区的开销相对较大。