开发者社区> 问答> 正文

Java 中的直接缓冲区和非直接缓冲区之间的区别是什么?

从哪里体现?

展开
收起
YDYK 2020-04-26 13:47:23 982 0
1 条回答
写回答
取消 提交回答
  • 字节缓冲区是JavaNIO API的重要类之一。这最初在 JDK 1.4 上的 java.nio 包中引入。它允许您在堆字节数组上工作,以及直接内存(在 JVM 之外发生)。

    它允许您在堆字节数组上工作,以及直接内存(在 JVM 之外发生)。

    直接字节缓冲区和非直接字节缓冲区之间的主要区别是其内存位置,非直接字节缓冲区只是字节数组周围的包装器,它们驻留在 Java Heap 内存中。

    同时,直接字节缓冲区在 JVM 之外,并且不会从堆中分配内存。

    字节缓冲区是直接缓冲区,也可以是非直接缓冲区。给定一个直接字节缓冲区,Java 虚拟机将尽最大努力直接在它上完成本机 I/O 操作。

    它将尝试在每次调用基础操作系统的本机 I/O 操作之前(或之后)将缓冲区的内容复制到(或从)中间缓冲区。

    2020-04-26 13:47:38
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载