ByteBuffer的allocate和allocateDirect
来源:互联网 发布:层次分析法软件yaahp 编辑:程序博客网 时间:2024/05/18 05:09
在Java中当我们要对数据进行更底层的操作时,通常是操作数据的字节(byte)形式,这时常常会用到ByteBuffer这样一个类。ByteBuffer提供了两种静态实例方式:
为什么要提供两种方式呢?这与Java的内存使用机制有关。第一种分配方式产生的内存开销是在JVM中的,而第二种的分配方式产生的开销在JVM之外,以就是系统级的内存分配。当Java程序接收到外部传来的数据时,首先是被系统内存所获取,然后在由系统内存复制拷贝到JVM内存中供Java程序使用。所以在第二种分配方式中,可以省去复制这一步操作,效率上会有所提高。但是系统级内存的分配比起JVM内存的分配要耗时得多,所以并不是任何时候allocateDirect的操作效率都是最高的。下面是一个不同容量情况下两种分配方式的操作时间对比:
由图可以看出,当操作数据量很小时,两种分配方式操作使用时间基本是相同的,第一种方式有时可能会更快,但是当数据量很大时,第二种方式会远远大于第一种的分配方式。
- public static ByteBuffer allocate(int capacity)
- public static ByteBuffer allocateDirect(int capacity)
为什么要提供两种方式呢?这与Java的内存使用机制有关。第一种分配方式产生的内存开销是在JVM中的,而第二种的分配方式产生的开销在JVM之外,以就是系统级的内存分配。当Java程序接收到外部传来的数据时,首先是被系统内存所获取,然后在由系统内存复制拷贝到JVM内存中供Java程序使用。所以在第二种分配方式中,可以省去复制这一步操作,效率上会有所提高。但是系统级内存的分配比起JVM内存的分配要耗时得多,所以并不是任何时候allocateDirect的操作效率都是最高的。下面是一个不同容量情况下两种分配方式的操作时间对比:
由图可以看出,当操作数据量很小时,两种分配方式操作使用时间基本是相同的,第一种方式有时可能会更快,但是当数据量很大时,第二种方式会远远大于第一种的分配方式。
- ByteBuffer的allocate和allocateDirect
- ByteBuffer的allocate和allocateDirect
- ByteBuffer的allocate和allocateDirect
- ByteBuffer的allocate和allocateDirect
- ByteBuffer的allocate和allocateDirect
- ByteBuffer.allocate()和ByteBuffer.allocateDirect
- ByteBuffer的allocate和allocateDirect区别
- ByteBuffer.allocate()和ByteBuffer.allocateDirect在性能上的差异
- ByteBuffer中allocateDirect与allocate的区别
- ByteBuffer.allocate() vs. ByteBuffer.allocateDirect()
- ByteBuffer.allocate()与ByteBuffer.allocateDirect()方法的区别。
- ByteBuffer.allocateDirect 与 allocate 方法
- ByteBuffer.allocate()/ByteBuffer.allocateDirect()/JNI DETECTED ERROR IN APPLICATION: jarray was NULL
- ByteBuffer.allocate()、BufferUnderflowException Android
- Difference between MappedByteBuffer and ByteBuffer.allocateDirect()
- byteBuffer的理解和使用
- (Mina的ByteBuffer和java.nio.ByteBuffer性能对比)Performance comparision of Mina's ByteBuffer VS java.nio.ByteBuffer use.
- 使用ByteBuffer和MappedByteBuffer的简单例子
- C#Stream类所使用的装饰模式
- Android系统HAL层开发,编译过程(hello)
- socket接收缓冲的思考
- 查看Yum安装的路径
- libxml的sax解析接口
- ByteBuffer的allocate和allocateDirect
- Qt探秘——谈ui文件的用法
- 使用java对文件或文件夹进行压缩和加密
- mm js
- 新建文本文档
- MvcApplication1.csproj.FileListAbsolute
- about_EntityFramework.help
- opencsdn.csproj.FileListAbsolute
- 日志