Netty中的Arena是什么以及LT和ET

news/2024/12/28 22:56:31/

Arena是什么

  • 在Netty中,Arena是一种内存分配器(Memory Allocator)的概念。Arena的主要目的是提高内存分配和释放的效率,减少碎片化,从而提高系统性能。

  • 具体而言,Netyy中的Arena主要用于分配和管理ByteBuf对象的内存,ByteBuf是Netty中用于处理字节数据的缓冲区类.Arena在这里的作用是为ByteBuf提供内存块,以避免频繁地进行直接内存分配和释放。

  • Arena的实现通常采用了一些内存池技术,例如Chunked Memory Pool。它将内存分割成固定大小的块(Chunk)当需要分配内存时,会从这些块中选择合适大小的块进行分配,而不是每次都直接向操作系统申请新的内存.这样做可以减少内存碎片化,提高内存的利用率,也能够更有效地进行内存回收

  • Netty的Arena实现是为了优化网络应用程序中频繁的数据传输操作,特别时在高并发的情况下。通过使用Arena,Netty可以更高效地管理和利用内存,从而提高系统的性能

什么是水平触发(LT)和边缘触发(ET)?

  • LT(level_triggered,水平触发):当被监控的文件描述符上有可读写事件发生时,epoll_wait()会通知处理程序去读写。如果这次没有把数据一次性全部读写完,那么下次调用epoll_wait()时,它还会通知你在上一个没读写完的文件描述符上继续读写,当然如果你一直不去读写,它会一直通知你

  • ET(Edge_triggered,边缘触发):当被监控的文件描述符上有可读写事件发生时,epoll_wait()会通知处理程序去读写。如果这次没有把数据全部读写完,那么下次调用epoll_wait()时,它不会通知你,也就是它只会通知你一次,直到该文件描述符上出现第二次可读写事件才会通知你,这种模式比水平触发效率高,系统不会充斥大量你不关心的就绪文件描述符.

  • select(),poll()模型都是水平触发模式,信号驱动IO是边缘触发模式,epoll()模型支持水平触发,也支持边缘触发,默认是水平触发,JDK中的select()实现是水平触发,而Netty提供的epoll的是实现中是边缘触发


http://www.ppmy.cn/news/1359294.html

相关文章

基于python+mysql的宠物领养网站系统

功能介绍 平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。 整个平台包括前台和后台两个部分。 前台功能包括:首页、宠物详情页、用户中心模块。后台功能包括:总览、领养管理、宠物管理、分类…

猫头虎分享已解决Bug || 容器编排问题:OrchestrationFailure, ContainerManagementError

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

金蝶云星空使用插件打开单据列表

文章目录 金蝶云星空使用插件打开单据列表核心代码操作测试 金蝶云星空使用插件打开单据列表 核心代码 表单插件-按钮点击事件 ListShowParameter showParam new ListShowParameter();showParam.IsLookUp false;//是否查找数据showParam.OpenStyle.ShowType ShowType.Moda…

数字化转型导师坚鹏:城市数字化转型顶层规划方法

城市数字化转型顶层规划方法 课程背景: 很多城市存在以下问题: 不知道如何系统地开展数字化转型工作? 不清楚如何科学地制定数字化转型战略? 不知道如何高效地实施数字化转型战略? 课程特色: 有…

Docker后台启动镜像,如何查看日志信息

执行 docker run -d -p 9090:8080 core-backend-image 命令后,Docker 会在后台运行一个新的容器实例,并映射宿主机的 9090 端口到容器的 8080 端口。要查看启动的容器日志,您需要先获取容器的 ID 或名称,然后使用 docker logs 命令…

pytest 框架自动化测试

随笔记录 目录 1. 安装 2. 安装pytest 相关插件 2.1 准备阶段 2.2 安装 2.3 验证安装成功 3. pytest测试用例的运行方式 3.1 主函数模式 3.1.1 主函数执行指定文件 3.1.2 主函数执行指定模块 3.1.3 主函数执行某个文件中的某个类、方法、函数 3.1.4 主函数执行生…

数据库事物复习

事务 比如说将张三的银行账户拿出一千给李四,首先需要查询张三的账户余额,扣除1000,然后如果给李四加上1000的过程中出现异常会回滚事务,临时修改的数据会回复回去。 -- 1. 查询张三账户余额 select * from account where name …

备战蓝桥杯 Day10(背包dp)

01背包问题 1267:【例9.11】01背包问题 【题目描述】 一个旅行者有一个最多能装 M� 公斤的背包,现在有 n� 件物品,它们的重量分别是W1,W2,...,Wn�1,�2&#…