博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ByteBuffer的allocate和allocateDirect
阅读量:5869 次
发布时间:2019-06-19

本文共 544 字,大约阅读时间需要 1 分钟。

在Java中当我们要对数据进行更底层的操作时,一般是操作数据的字节(byte)形式,这时经常会用到ByteBuffer这样一个类。ByteBuffer提供了两种静态实例方式: 
Java代码  
  1. public static ByteBuffer allocate(int capacity)  
  2. public static ByteBuffer allocateDirect(int capacity)  
为什么要提供两种方式呢?这与Java的内存使用机制有关。第一种分配方式产生的内存开销是在JVM中的,而另外一种的分配方式产生的开销在JVM之外,以就是系统级的内存分配。当Java程序接收到外部传来的数据时,首先是被系统内存所获取,然后在由系统内存复制复制到JVM内存中供Java程序使用。所以在另外一种分配方式中,能够省去复制这一步操作,效率上会有所提高。可是系统级内存的分配比起JVM内存的分配要耗时得多,所以并非不论什么时候allocateDirect的操作效率都是最高的。以下是一个不同容量情况下两种分配方式的操作时间对照: 
 
由图能够看出,当操作数据量非常小时,两种分配方式操作使用时间基本是同样的,第一种方式有时可能会更快,可是当数据量非常大时,另外一种方式会远远大于第一种的分配方式。

转载地址:http://qvtnx.baihongyu.com/

你可能感兴趣的文章
json解析
查看>>
oracle中判断写法
查看>>
server2008 DHCP的安装
查看>>
Linux集群之corosync+pacemaker实现MySQL高可用
查看>>
漏洞扫描系统
查看>>
“金”秋
查看>>
vector中的排序
查看>>
STP
查看>>
python当中__metaclass__探讨
查看>>
HTTP/FTP客户端开发库:libwww、libcurl、libfetch 以及更多
查看>>
怎么查路由器IP地址
查看>>
Java程序员必须掌握的8大排序算法
查看>>
如何设计一个优秀的API
查看>>
字符串操作函数的编写
查看>>
docker 实践(一)安装
查看>>
设计模式 - 结构型 - 代理模式
查看>>
2014年工作中遇到的20个问题:101-120
查看>>
Fans同学的基本信息-V1.0
查看>>
w2k8 time sync
查看>>
试论社会学专业定×××方法课程教学现状及改革途径
查看>>