mq内存映射
2024-08-27 09:42:45
MappedFileQueue的封装
MappedFileQueue是MappedFile的管理容器,MappedFileQueue是对存储目录的封装。
查找MappedFile:
1.根据时间戳来查找MappedFile:
2.根据消息偏移量offset查找MappedFile
mq采用定时删除策略,不定时的将已消费的消息从存储文件中删除,会造成极大的内存压力与资源浪费,也就是说在存储文件中,第一个文件不一定是0000...因为该文件在某一时刻会被删除。
参考下面3个方法理解:
内存映射文件MappedFile
wirteBuffer:堆内存ByteBuffer,如果不为空,数据首先将存储在该Buffer中,然后提交到MappedFile对应的内存映射文件Buffer。transientStorePoolEnable为true时不为空
transientStorePool:堆内存池,transientStorePoolEnable为true时启用。
fileFromOffset:该文件的初始偏移量
mappedByteBuffer:物理文件对应的内存映射Buffer。
MappedFile初始化:
1.transientStorePoolEnable为true表示内容先存储在堆外内存,然后通过commit线程将数据提交到内存映射Buffer中,再通过Flush线程将内存映射Buffer中的数据持久化到磁盘。
刷盘:
是不是少了FileChannel怎么到内存映射Buffer的???
获取MappedFile最大读指针:
MappedFile销毁:
最新文章
- Oracle在存储过程中如何返回结果集
- windows下安装python模块
- Linux crontab定时执行任务
- 15天玩转redis —— 第七篇 同事的一次缓存操作引起对慢查询的认识
- mysql基础三(视图、触发器、函数、存储过程、事务、防注入)
- laravel5.1关于lists函数的bug
- DLL使用总结
- 如何讓Android系統顯示CJK擴展區漢字
- bzoj3289
- require和include的区别及自动加载的定义
- 【 全干货 】5 分钟带你看懂 Docker !
- 自动刷新 CSS文件
- Linux 管理软件
- 关于计时器的js函数
- mysql 5.7 线程阻塞处理
- JSON数据提取
- 在WINDOWS上开发IOS应用的方法
- 一、linux学习之centOS系统安装(VMware下安装)
- PHP设计模式_单例模式
- 166. Nth to Last Node in List