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销毁:

最新文章

  1. Oracle在存储过程中如何返回结果集
  2. windows下安装python模块
  3. Linux crontab定时执行任务
  4. 15天玩转redis —— 第七篇 同事的一次缓存操作引起对慢查询的认识
  5. mysql基础三(视图、触发器、函数、存储过程、事务、防注入)
  6. laravel5.1关于lists函数的bug
  7. DLL使用总结
  8. 如何讓Android系統顯示CJK擴展區漢字
  9. bzoj3289
  10. require和include的区别及自动加载的定义
  11. 【 全干货 】5 分钟带你看懂 Docker !
  12. 自动刷新 CSS文件
  13. Linux 管理软件
  14. 关于计时器的js函数
  15. mysql 5.7 线程阻塞处理
  16. JSON数据提取
  17. 在WINDOWS上开发IOS应用的方法
  18. 一、linux学习之centOS系统安装(VMware下安装)
  19. PHP设计模式_单例模式
  20. 166. Nth to Last Node in List

热门文章

  1. Luogu P5087 数学
  2. 如何学习C语言
  3. xlwt模块,(Excel表格)
  4. 正式班D23
  5. 浅谈Linux桌面(发行版及桌面环境)
  6. Maven魔法堂:安装Oracle JDBC Driver依赖的那些坑
  7. div 内元素的垂直居中
  8. 16flask错误处理
  9. 经典c程序100例==11--20
  10. vs code远程开发