• 【从NIO到Netty】3.NIOBuffer简介


    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);  // 在直接内存中进行内存分配

  • 相关阅读:
    mongodb教程
    redis高级知识
    memcached删除机制与大数据缓存问题
    nginx 运维基础
    mysql 集群与分区
    Memcached之缓存雪崩,缓存穿透,缓存预热,缓存算法
    git cz配置
    Angular零碎知识点-持续补充
    Vue学习笔记-组件
    Vue学习笔记-自定义指令生命周期函数
  • 原文地址:https://www.cnblogs.com/heben/p/13186944.html
Copyright © 2020-2023  润新知