ByteBuffer.allocate()与allocateDirect()的区别

allocate()产生的是HeapByteBuffer的实例, 本质上是一个no direct buffer, allocateDirect()产生的是DirectByteBuffer的实例, 本质是一个direct buffer

  • 主要区别
    1. buffer的创建方式不同, no direct buffer还可以通过封装已存在的byte array来产生
    2. 执行IO操作时不同, no direct buffer会将自己复制到中间buffer中, 而direct buffer不会
    3. no direct buffer分配在heap上, 而direct buffer分配在直接内存中, 并不在JVM虚拟机中

推荐阅读更多精彩内容

  • Buffer java NIO库是在jdk1.4中引入的,NIO与IO之间的第一个区别在于,IO是面向流的,而NI...
    德彪阅读 1,923评论 0 3
  • 缓冲区本质是一块可以写入数据,然后可以从中读取数据的内存,这块内存被包裹成NIO buffer对象,并且提供了一些...
    RoyRuan阅读 1,514评论 0 1
  • 一、Socket通道 新的socket通道类可以运行非阻塞模式并且是可选择的。这两个性能可以激活大程序(如网络服务...
    Java架构师笔记阅读 2,001评论 0 3
  • 传统流式IO 传统的Java IO是流式的IO,从诸如类名InputStream和OutputStream中就可以...
    chandarlee阅读 851评论 0 50
  • Java NIO提供了与标准IO不同的IO工作方式: Channels and Buffers(通道和缓冲区):标...
    Java面试指南阅读 2,271评论 0 2
  • 转眼间,农历腊月二十八了,随着新年的临近,我似乎听到了年的脚步,正在铿锵有力的走来,像马蹄哒哒,像分针砧砧,...
    貆道上的瓦当阅读 262评论 0 4
  • 侄子结婚,回到了阔别许久的家乡!二姐闲着没事,带上小女儿回了趟故乡的老屋,老屋住着三家河南老乡,以收破烂为...
    蒋学明阅读 2,528评论 11 23
  • 不管再爱,也不能像傻逼一样。 曾经好多人都差点淹死在爱情这条河里,即使浑浊不已,即使满目疮痍,他们都会前仆后继的冲...
    有你江江好阅读 559评论 6 4
  • 文/墨水 斜杠青年这个词最近是越来越火,到底什么是斜杠青年。 斜杠青年:选择拥有多重职业和身份的多元生活的人群。简...
    墨水坊阅读 866评论 0 2