程序设计的5个底层逻辑,决定你能走多快
下面我们贴一段 rocketmq 消息存储模块的代码,位于 MappedFile 类中,这个类是 rocketMq 消息存储的核心类感兴趣的可以自行研究,下面两个方法一个是创建文件映射,一个是预热文件,每预热 1000 个数据页,就让出 CPU 权限。 private void init(final String fileName, final int fileSize) throws IOException { this.fileName = fileName; this.fileSize = fileSize; this.file = new File(fileName); this.fileFromOffset = Long.parseLong(this.file.getName()); boolean ok = false;
ensureDirOK(this.file.getParent());
try { this.fileChannel = new RandomAccessFile(this.file, "rw").getChannel(); this.mappedByteBuffer = this.fileChannel.map(MapMode.READ_WRITE, 0, fileSize); TOTAL_MAPPED_VIRTUAL_MEMORY.addAndGet(fileSize); TOTAL_MAPPED_FILES.incrementAndGet(); ok = true; } catch (FileNotFoundException e) { log.error("create file channel " + this.fileName + " Failed. ", e); throw e; } catch (IOException e) { log.error("map file " + this.fileName + " Failed. ", e); throw e; } finally { if (!ok && this.fileChannel != null) { this.fileChannel.close(); } } } JVM 中对象的内存布局 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- iPhone XS Max怎么截屏 iPhone XS Max截屏教程
- Flex中给按钮添加链接点击链接打开网页的方法
- ios9.3老板模式怎么设置 ios9.3老板模式是什么
- iOS 11.2 beta 2公测版怎么升级 iOS 11.2 beta 2公测版升级
- OS X 10.12.4 Beta4公测版怎么更新 OS X 10.12.4 Beta4公测
- Apple Music怎么显示歌词 Apple Music如何显示歌词
- 滴滴优步合并司机补贴奖励还继续发放吗
- iOS 9.3正式版怎么样 iOS 9.3正式版升级教程
- 阴阳师暗黑豹副本怎么打 阴阳师暗黑豹副本怎么玩
- 一起作业网忘记密码怎么找回 一起作业网忘记密码方法