当前位置: 首页 > article >正文

《Netty》从零开始学netty源码(四十六)之PooledByteBuf

PooledByteBuf

Netty中一大块内存块PoolChunk默认大小为4MB,为了尽可能充分利用内存会将它切成很多块PooledByteBufPooledByteBuf的类关系图如下:

在这里插入图片描述

PooledUnsafeDirectByteBufPooledUnsafeHeapByteBuf直接暴露对象的底层地址。

PooledByteBuf的创建过程开销很大,高并发情况下进行网络I/O时会创建大量的实例,为了降低系统开销,Netty将创建过的PooledByteBuf进行缓存重复利用。它的属性如下:

在这里插入图片描述

它的方法中比较重要的有:从channel中读数据getBytes()、从channel中写数据setBytes()、动态扩容capacity()、分配缓存allocate()、回收缓存deallocate()、回收利用recycle()

getBytes

在这里插入图片描述

分配得到的字节缓冲区与memory共享底层数据,但读/写索引单独维护。

checkIndex

在这里插入图片描述

ensureAccessible()

在这里插入图片描述

checkIndex0

在这里插入图片描述

_internalNioBuffer

newInternalNioBuffer()方法为抽象方法,此处与memory类型有关,可能是直接内存或者堆内存,因此其实现由具体的子类实现。

本文分析至此,更多后文再具体分析,感谢阅读。
请添加图片描述


http://www.kler.cn/a/16234.html

相关文章:

  • 「人眼视觉不再是视频消费的唯一形式」丨智能编解码和 AI 视频生成专场回顾@RTE2024
  • 在JPA和EJB中用乐观锁解决并发问题
  • uniapp在app模式下组件传值
  • C++ 编程基础(6)作用域 | 6.3、类作用域
  • 深入探索React合成事件(SyntheticEvent):跨浏览器的事件处理利器
  • 前端:块级元素和行内元素
  • 不能使用chatGPT?这3个平替甚至比chatGPT更强
  • 万字长文 - Nature 综述系列 - 给生物学家的机器学习指南 2 (传统机器学习方法如何选择)...
  • 《孙子兵法》中关于领导力的一个不错的描述
  • 创建NAT模式KVM虚拟机
  • spring常用的事务传播行为
  • CSS(二)-- 选择器的运用(针对基本选择器和复合选择器的详细解析)
  • 一文了解使用Moonbeam原生跨链的潜力项目
  • 【Java笔试强训 27】
  • 【Leetcode -86.分隔链表 -92.反转链表Ⅱ】
  • LeetCode_字符串_简单_415.字符串相加
  • 终于把 vue-router 运行原理讲明白了(二)!!!
  • 票务app开发案例分享
  • 【JAVA】#详细介绍!!! 文件操作之File对象(1)!
  • 从信息泄露到权限后台
  • Java面试题队列
  • Pandoc 从入门到精通,你也可以学会这一个文本转换利器
  • 2的幂次方
  • 微软开源AI修图工具让老照片重现生机
  • Java版本电子招标采购系统源代码—企业战略布局下的采购寻源
  • 网络安全漏洞分析之远程代码执行