javaNIO实战3----> java NIO的非直接缓冲区与直接缓冲区

it2025-05-05  6

1、NIO的非直接缓冲区与直接缓冲区

      重要的一点:NIO的直接缓冲区与废纸接缓冲区值针对于ByteBuffer这种缓冲区,其他的实现类没有直接缓冲区的说法。

      非直接字节缓冲区:通过allocate()方法进行分配,将缓冲区建立在JVM的堆内存中。

      直接字节缓冲区:通过ByteBuffer.allocateDirect()方法进行分配,会将缓冲区建立在OS的物理内存中,可以提高效率。

      

 

2、非直接缓冲区之所以效率不行是因为,内核空间与用户空间的copy导致的,模型如下:

       

 

3、直接字节缓冲区模型:

       

        减少了内核空间 到 用户空间的数据copy过程,所以能够显著的提高效率。缺点:消耗大,不易控制。

 

最新回复(0)