Netty中的缓存Bytebuf

news2025/7/9 5:19:30

首先我们来明确一下Buffer(缓存)
JavaNIO中的Buffer、Netty中的Buffer、Netty中的Bytebuf这是3个不同的类,但实现的内容和完成的功能几乎一致,最原始的是JavaNIO中的Buffer实现,最先进的是Netty中Bytebuf的实现,下面我们来看Bytebuf类

Netty中的Buffer讲解

http://t.zoukankan.com/TomSnail-p-6218163.html
https://www.cnblogs.com/shanheyongmu/p/16490399.html
源码讲解:https://zhuanlan.zhihu.com/p/579902298

Netty中的Bytebuf类
(1)Bytebuf会自动扩容
在这里插入图片描述
在这里插入图片描述
(4)组成(四部分组成:废弃部分、可读部分、可写部分、可扩容部分),因为这种结构在读写之间不需要进行flip转换。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
说明:
每个Bytebuf都实现的这个ReferenceCounted接口,这个接口采用引用计数的方法,也就是这个buffer对象被引用则计数器会+1,调用release计数器-1,计数器为0时,内存被回收,即使该对象还在,但方法不可用
在这里插入图片描述
那么有一个问题,由谁来负责buffer的回收呢,或者由谁来操作buffer的计数器呢?
答案:我们回顾一下是谁与buffer产生io,在Netty中是由handler与buffer产生IO,从而与客户端通信,handler在pipeline中可能是由一系列的handler来构成整个消息的处理过程,当前的这个buffer最终由最后一个引用的handler来负责回收。图中有一个head和tail两个handler,因为这是一个双向链表,如果有一个buffer在调用过程中一直没有被回收,最终在head或tail中调用,会负责回收。如下如所示:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/8973.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

10 分钟, 带你彻底掌握 SQL 多表查询

1.前言 多表查询,也称为多表连接查询;作为关系型数据库最主要的查询方式,在日常工作中被广泛使用 常见的多表查询操作包含:子查询、内连接、左外连接、右外连接、完全连接、交叉连接 本篇文章将利用一个实例逐一介绍这些操作 …

【华为OD机试真题 python】 太阳能板最大面积【2022 Q4 | 100分】

■ 题目描述 给航天器一侧加装长方形或正方形的太阳能板(图中的红色斜线区域),需要先安装两个支柱(图中的黑色竖条),再在支柱的中间部分固定太阳能板。 但航天器不同位置的支柱长度不同,太阳能…

做一名既有宽度也有深度的测试!

一名好的测试人员,在工作中,不仅要做到有宽度更要有深度! 何为宽度?测试用例的覆盖面更广更全。 测试人员设计测试用例的时候可以分为这几种类型: 一:将prd的需求描述copy到测试用例。 二:细…

Java线程安全与对象头结构信息

文章目录一 线程安全问题1.1 什么是线程安全问题?1.2 自增运算真的线程安全吗?1.3 Synchronized锁表现三种形势?1.3.1 synchronized同步方法1.3.2 synchronized同步代码块1.3.3 synchronized静态方法1.3.4 总结二 Java对象结构与内置锁2.1 Ja…

浏览器自动化利器Selenium IDE使用指南

文章目录前言一、安装及界面1.1 安装1.2 界面二、常用命令2.1 通用2.2 表单2.3 流程控制三、常用操作3.1 命令操作3.2 js脚本3.3 录制3.4 导出四、实际操作例子4.1 红黑树插入可视化4.2 github下载参考前言 Selenium 是一个浏览器自动化框架,专门为 W3C WebDriver …

创龙AD+全志T3 TL7606I模块测试

上一篇:创龙AD全志T3 ad_display 开发案例(2) 前 言 本文主要介绍基于全志科技T3(ARM Cortex-A7)处理器的8/16通道AD采集开发案例,使用核芯互联CL1606/CL1616AD芯片,亦适用于ADI AD7606/AD7616。CL1606/CL1616与AD7606/AD7616软硬件兼容。 …

力扣(LeetCode)775. 全局倒置与局部倒置(C++)

模拟 理解题&#xff0c;全局倒置就是不相邻的逆序对&#xff0c;局部倒置就是相邻的逆序对。提示中给出&#xff0c;0<nums[i]<n0 < nums[i] < n0<nums[i]<n &#xff0c;其中 nnums.lengthn nums.lengthnnums.length , numsnumsnums 中的所有整数 互不相…

什么是 rektguy NFT系列?

rektguy 系列是一组闪烁着霓虹灯颜色的饮酒骷髅 该项目背后的团队没有提出路线图或分支项目 艺术家 OSF 已经在 NFT 生态系统中拥有一个成熟的粉丝群体 rektguy NFT系列由 8,814 个 NFT 组成&#xff0c;展示了穿着连帽衫、用瓶子喝水的骷髅。这些人物由深黑色背景上闪烁的霓…

[论文阅读] 颜色迁移-EM概率分割的局部颜色迁移

[论文阅读] 颜色迁移-EM概率分割的局部颜色迁移 文章: Local Color Transfer via Probabilistic Segmentation by Expectation-Maximization,[paper][code(未公开)] 本文目的为: 图像局部颜色迁移. 1-符号说明 在进行本文算法原理说明之前, 先对一些英文缩写进行简单说明: …

一次nacos 导致的 CPU 飙高问题

序 今天下午突然 出现 测试环境 cpu飙高&#xff0c;干到了 60%&#xff0c;其他项目 响应时间明显变长。。。有点吓人&#xff0c;不想背锅 项目背景 出问题的项目是 需要连接各个不同nacos 和不同的 namespace 进行对应操作的 一个项目&#xff0c;对nacos的操作都是httpC…

JavaScript break 、 continue和return 语句介绍

目录 一、Break 1、介绍 2、代码&#xff1a; 3、示例&#xff1a; 二、Continue 1、介绍 2、代码 3、示例 三、break 、continue总结&#xff1a; 代码 示例 四、Return 1、简介 2、语法&#xff1a; 3、代码 4、示例 五、return、break、continue总结 1、re…

02【MyBatis框架的CRUD】

二、MyBatis框架的CRUD 重新搭建一个新的MyBatis环境&#xff0c;进行MyBatis的CRUD测试&#xff1b; 参考&#xff1a;01【MyBatis-快速入门】 2.1 新增 2.1.1 dao接口 package com.dfbz.dao;/*** author lscl* version 1.0* intro:*/ import com.dfbz.entity.Emp;public i…

秒杀系统设计(微服分布式)

流程图(分布式) 例子 现场要卖1000件下面这个婴儿纸尿裤&#xff0c;根据以往这样秒杀活动的数据经验来看&#xff0c;目测来抢这100件纸尿裤的人足足有10万人 问题 高并发 秒杀的特点就是这样时间极短、 瞬间用户量大。 正常的店铺营销都是用极低的价格配合上短信、APP的…

自制操作系统日记(6):静态桌面初步

代码仓库地址&#xff1a;https://github.com/freedom-xiao007/operating-system 简介 在上篇中我们成功的加载跳转执行了C语言的代码&#xff0c;本篇中将跟随书籍&#xff0c;初步展示了一个系统页面的初步界面&#xff0c;看到桌面那刻还是有点意思的 最终结果展示 不多…

贵的键盘就一定好吗?程序员该怎样选择一款适合自己的键盘呢,来这里参考下吧

&#x1f3ac; 博客主页&#xff1a;https://xiaoy.blog.csdn.net &#x1f3a5; 本文由 呆呆敲代码的小Y 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f384; 学习专栏推荐&#xff1a;Unity系统学习专栏 &#x1f332; 游戏制作专栏推荐&#xff1a;游戏制作 &…

唯亚威VIAVIFiberChek Sidewinder光纤手持式检测仪

唯亚威FiberChek Sidewinder 是业界“全功能”手持式检测和分析解决方案&#xff0c;适用于诸如 MPO 等多光纤连接器。唯亚威VIAVI 屡获殊荣的 FiberChek 系列中的这款最新产品提供了一个完全自动化的解决方案&#xff0c;可对 MPO 或其他多光纤连接器中的每条光纤进行检测和分…

C. Peaceful Rooks(并查集找环)

Problem - 1411C - Codeforces 题意: 你会得到一个nn的棋盘。棋盘的行和列从1到n编号。单元格(x,y)位于列号x和行号y的交点上。 车是一个棋子&#xff0c;它可以在一个回合内垂直或水平地移动任何数量的单元。棋盘上有m个车(m<n)&#xff0c;其放置方式是没有一对车互相攻…

空间金字塔池化Spatial Pyramid Pooling

1. 概述 通常在卷积神经网络CNN中主要是由卷积层&#xff08;包括Convolution和Pooling两部分组成&#xff09;和全连接层组成&#xff0c;对于任意一张大小的图片&#xff0c;通常需要通过裁剪或者拉伸变形的方式将其转换成固定大小的图片&#xff0c;这样会影响到对图片的识…

从源码角度分析Mybatis级联映射的实现原理

Mybatis是一个半自动化ORM框架&#xff0c;可以将数据库中的记录转换为java实体对象&#xff0c;但是java实体属性通常采用驼峰命名法&#xff0c;而数据库字段习惯采用下划线分隔命名法&#xff0c;因此需要用户指定java实体属性与数据库表字段之间的映射关系。 mybatis的Mapp…

智慧网格解决方案-最新全套文件

智慧网格解决方案-最新全套文件一、建设背景二、思路架构三、建设方案1、民生管理2、网格化管理3、智慧党建4、网上政务5、综治管理四、获取 - 智慧网格全套最新解决方案合集一、建设背景 在我国现代化转型中&#xff0c;社会环境的复杂性和不确定性增强&#xff0c;传统的基层…