JavaNIO的Buffer详解

本文详细介绍了Java NIO的Buffer,包括其Capacity、Position和Limit等属性,以及Buffer的相关操作方法。文章深入探讨了直接内存的概念,解释了为何Java使用直接内存的原因,并分析了Java在NIO中如何利用直接内存实现零拷贝,以提高数据传输效率。同时,文章还讨论了Java生态中的零拷贝技术,如NIO的MappedByteBuffer和sendfile方法,以及Kafka和Netty在零拷贝技术上的应用。
摘要由CSDN通过智能技术生成

1. 简介

Buffer缓冲区实际上就是一个数组,把数组的内容和信息包装成一个Buffer对象,它提供了一组访问这些信息的方法。

在这里插入图片描述

2. 相关属性

  • Capacity

作为一个内存块,Buffer 有一个固定的大小值,也叫“capacity”。你只能往里写 capacity 个 byte、long,char 等类型。一旦 Buffer 满了,需要将其清空(通过读数据或者清除数据) 才能继续写数据往里写数据。

  • Position

当你写数据到 Buffer 中时,position 表示当前能写的位置。初始的 position 值为 0。当一 个 byte、long 等数据写到 Buffer 后, position 会向前移动到下一个可插入数据的 Buffer 单元。position 最大可为 capacity – 1。当读取数据时,也是从某个特定位置读。当将 Buffer 从写模式切换到读模式,position 会被重置为0.。当从Buffer的position处读取数据时,position向前移动到下一个可读的位置。

  • Li
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值