码迷,mamicode.com
首页 > Web开发 > 详细

【从BIO到Netty】3.Buffer简介

时间:2020-06-24 14:06:52      阅读:59      评论:0      收藏:0      [点我收藏+]

标签:简介   继承   nio   一个   内存分配   完成   使用   建立   读写   

Buffer为一个抽象类,有许多子类

个人感觉ByteBuffer用得最多,下面继续以该类为例进行介绍

我觉得废话是有用的,可以建立感性认识。因此介绍一下,java.nio.ByteBuffer的作者为Mark Reinhold,这个类从JDK 1.4开始就有了。

ByteBuffer的继承关系如下

技术图片

 

 

 

它的基本使用如下

import java.nio.ByteBuffer;

public class NioBuffer {
    public static void main(String[] args) {
        ByteBuffer buffer = ByteBuffer.allocate(4096);
        buffer.put("hello world".getBytes());
        System.out.println(new String(buffer.array()));
    }
}

 

ByteBuffer.allocate(4096);

 如果去看源代码,可知实际是在堆中分配一个大小为4096的byte数组

 

ByteBuffer还维护了一系列属性,用来表征buffer的状态

• mark:-1表示undefined,但是更具体地含义和用车并不明白

• pos:用于读取的游标

• lim:表征读取的最大位置

• cap :byte数组的容量

以上面为例,ByteBuffer.allocate(4096)完成后,mark为-1,pos为0,lim为4096,cap为4096

这些属性在读写过程中的用处和更精确的含义,将在后面进行介绍

 

除此之外,还有其它几种分配内存的方式,比如

ByteBuffer.allocateDirect(4096);  // 在直接内存中进行内存分配

技术图片

 

【从BIO到Netty】3.Buffer简介

标签:简介   继承   nio   一个   内存分配   完成   使用   建立   读写   

原文地址:https://www.cnblogs.com/heben/p/13186944.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!