ByteBuffer.allocateDirect与allocate方法_六太 allocatedirect 释放

一、首先是JavaDocument:
ByteBuffer.allocateDirect与allocate方法_六太 allocatedirect 释放
直接与非直接缓冲区
字节缓冲区要么是直接的,要么是非直接的。如果为直接字节缓冲区,则 Java 虚拟机会尽最大努力直接在此缓冲区上执行本机 I/O操作。也就是说,在每次调用基础操作系统的一个本机 I/O操作之前(或之后),虚拟机都会尽量避免将缓冲区的内容复制到中间缓冲区中(或从中间缓冲区中复制内容)。

直接字节缓冲区可以通过调用此类的 allocateDirect工厂方法来创建。此方法返回的缓冲区进行分配和取消分配所需成本通常高于非直接缓冲区。直接缓冲区的内容可以驻留在常规的垃圾回收堆之外,因此,它们对应用程序的内存需求量造成的影响可能并不明显。所以,建议将直接缓冲区主要分配给那些易受基础系统的本机I/O 操作影响的大型、持久的缓冲区。一般情况下,最好仅在直接缓冲区能在程序性能方面带来明显好处时分配它们。

二、allocateDirect
public static ByteBuffer allocateDirect(intcapacity)分配新的直接字节缓冲区。新缓冲区的位置将为零,其界限将为其容量,其标记是不确定的。无论它是否具有底层实现数组,其标记都是不确定的。
参数:
capacity -新缓冲区的容量,以字节为单位
返回:
新的字节缓冲区
抛出:
IllegalArgumentException - 如果 capacity 为负整数

三、allocate 方法:

分配一个HeapByteBuffer的实例,其底层是byte数组。

在使用ByteBuffer 分配字节数组的时候,要注意使用!

一、ByteBuffer类

1) 实例化

直接使用ByteBuffer类的静态方法static ByteBufferallocate(int capacity) 或 staticByteBufferallocateDirect(intcapacity) 这两个方法来分配内存空间,两种方法的区别主要是后者更适用于繁复分配的字节数组。而put(ByteBuffer src)可以从另一个ByteBuffer中构造,也可以通过wrap方法从byte[]中构造,具体参考下面的类型转化内容。

2) 类型转化

ByteBuffer可以很好的和字节数组byte[]转换类型,通过执行ByteBuffer类的finalbyte[] array()方法就可以将ByteBuffer转为byte[]。从byte[]来构造ByteBuffer可以使用wrap方法,目前Android或者说Java提供了两种重写方法,比如为staticByteBuffer wrap(byte[] array) 和static ByteBuffer wrap(byte[] array, int start,int len),第二个重载方法中第二个参数为从array这个字节数组的起初位置,第三个参数为array这个字节数组的长度。

3) 往ByteBuffer中添加元素

目前ByteBuffer提供了多种put重写类型来添加,比如put(byte b) 、putChar(char value) 、putFloat(floatvalue)等等,需要注意的是,按照Java的类型长度,一个byte占1字节,一个char类型是2字节,一个float或int是4字节,一个long则为8字节,和传统的C++有些区别。所以内部的相关位置也会发生变化,同时每种方法还提供了定位的方法比如ByteBufferput(int index, byte b)

4) 从ByteBuffer中获取元素

同上面的添加想法,各种put被换成了get,比如byteget() 、floatgetFloat(),当然了还提供了一种定位的方式,比如double getDouble(intindex)

5) ByteBuffer中字节顺序

对于Java来说默认使用了BIG_ENDIAN方式存储,和C正好相反的,通过

final ByteOrder order()返回当前的字节顺序

finalByteBuffer order(ByteOrderbyteOrder) 设置字节顺序,ByteOrder类的值有两个定义,比如LITTLE_ENDIAN、BIG_ENDIAN,如果使用当前平台则为ByteOrder.nativeOrder()在Android中则为BIG_ENDIAN,当然如果设置为order(null) 则使用LITTLE_ENDIAN。

  

爱华网本文地址 » http://www.413yy.cn/a/25101014/190045.html

更多阅读

雪菊的功效与食用方法 芦荟食用方法和功效

昆仑雪菊又名天山雪菊、冰山雪菊、高寒香菊。雪菊生长在天山海拔2000米以上的高寒山区,野生草本植物,气候寒冷潮湿,空气稀薄,生态环境独特。雪菊的功效与食用方法——工具/原料雪菊雪菊的功效与食用方法——雪菊功效雪菊的功效与食用

搜狗拼音输入法皮肤设置与更换方法 搜狗拼音输入法手机版

搜狗拼音输入法皮肤设置与更换方法——简介搜狗拼音输入法功能相当强大,也是目前最受欢迎的输入法,最近很多好朋友看到自己的搜狗输入法皮肤很有个性,纷纷问到自己如何来设置和更换一个个性化的皮肤。下面就来说说具体设置和更换搜狗拼

鹿茸功效与服用方法大全 鹿茸怎么吃

鹿茸功效与服用方法大全——简介鹿茸是一种名贵的中药药材,同样也是一种贵重的滋补保健品,我们平时都听说过,一提起鹿茸,大家都会给个好评。能够起到强筋健骨,延年益寿等功效,还能治疗神经衰弱等症状,因此鹿茸是很好的一种药材补品。鹿茸的

碧玺的功效与挑选方法 金曜石的功效与作用

碧玺的功效碧玺成为彩色宝石中的新宠儿,吸引了越来越多的投资者关注,碧玺如万花筒般绚丽的色彩,才是轻易捕获女人心的最重要因素。 碧玺因色彩斑斓而被称为“落入人间的彩虹”,相传得到碧玺就得到了幸福与财富。 碧玺的挑选美丽的碧

声明:《ByteBuffer.allocateDirect与allocate方法_六太 allocatedirect 释放》为网友棄鋽暀厝分享!如侵犯到您的合法权益请联系我们删除