必威体育Betway必威体育官网
当前位置:首页 > IT技术

ByteBuffer.allocate()与ByteBuffer.allocateDirect()方法的区别。

时间:2019-06-09 12:44:08来源:IT技术作者:seo实验室小编阅读:52次「手机版」
 

allocatedirect

在Java中当我们要对数据进行更底层的操作时,一般是操作数据的字节(byte)形式,这时经常会用到ByteBuffer这样一个类。ByteBuffer提供了两种静态实例方式: 

  1. public static ByteBuffer allocate(int capacity)  
  2. public static ByteBuffer allocateDirect(int capacity)  

为什么要提供两种方式呢?这与Java的内存使用机制有关。第一种分配方式产生的内存开销是在JVM中的,而另外一种的分配方式产生的开销在JVM之外,以就是系统级的内存分配。当Java程序接收到外部传来的数据时,首先是被系统内存所获取,然后在由系统内存复制复制到JVM内存中供Java程序使用。所以在另外一种分配方式中,能够省去复制这一步操作,效率上会有所提高。可是系统级内存的分配比起JVM内存的分配要耗时得多,所以并非不论什么时候allocateDirect的操作效率都是最高的。以下是一个不同容量情况下两种分配方式的操作时间对照: 

 

由图能够看出,当操作数据量非常小时,两种分配方式操作使用时间基本是同样的,第一种方式有时可能会更快,可是当数据量非常大时,另外一种方式会远远大于第一种的分配方式。

相关阅读

医院做软文营销网络推广方法技巧

  医院的网络营销往往是千头万绪,因此在过程控制中,只有掌握患者的需求才能帮助医院有序,有步骤地实施网络营销。网络营销过程控制

万能解决问题思路方法——3W

万能解决问题思路方法----3W就是What、How、Why 这是一位值得我去学习的榜样,分享给我的,从中受益颇深,也分享给此刻或许迷茫小鹿的

结果导向设计方法论——学会定义产品最终体验

相信很多人听到『结果导向设计』时会有困惑,它和『场景导向设计』有什么关联呢?其实结果导向设计即自动感知场景的到来,预估期望带给

产品需求文档(PRD)的撰写方法

做好产品需求文档的这十步,是经过长期的实践经验和反复验证而得到的。可能这里描述的不是很全面,但他已经足够让你做一个成功的产品

单片机两大延时方法总结

实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时;另一种是软件延时,这

分享到:

栏目导航

推荐阅读

热门阅读