内存映射文件和直接缓冲区的区别

内存映射文件和直接缓冲区的区别是:直接缓冲区是在用户态里JVM堆外(RAM上)申请了一块空间,我们在这块空间上进行随机读写数据。内存映射文件,是由一个文件到一块内存的映射。Win32提供了允许应用程序把文件映射到一个进程的函数。

内存映射文件和直接缓冲区的区别-Worktile社区

直接缓冲区

是在用户态里JVM堆外(RAM上)申请了一块空间,我们在这块空间上进行随机读写数据。

直接缓冲区是为加快I/O 速度,使用一种特殊方式为其分配内存的缓冲区,JDK 文档中的描述为:给定一个直接字节缓冲区,Java虚拟机将尽最大努力直接对它执行本机I/O 操作。也就是说,它会在每一次调用底层操作系统的本机I/O 操作之前(或之后),尝试避免将缓冲区的内容拷贝到一个中间缓冲区中或者从一个中间缓冲区中拷贝数据。要分配直接缓冲区,需要调用allocateDirect()方法,而不是allocate()方法,使用方式与普通缓冲区并无区别,

内存映射文件

内存映射文件,是由一个文件到一块内存的映射。Win32提供了允许应用程序把文件映射到一个进程的函数。

一般在读文件的时候 我们发起一个read调用,该调用会把磁盘里的数据拷贝内核的page cache里,然后再从内核的page cache拷贝到用户态的byte数组里,接下来我们操作的是用户态里的byte数组里面的数据。

而内存映射文件则跳过了磁盘文件数据在用户态和内核态之间的拷贝操作,直接操作内核态的page cache。page cache和磁盘之间的交互则由系统完成。

很明显可以看到直接缓冲区和内存映射文件的使用场景是不太一样的。

延伸阅读:

内存映射文件适用范围

这种函数最适用于需要读取文件并且对文件内包含的信息做语法分析的应用程序,如:对输入文件进行语法分析的彩色语法编辑器,编译器等。

把文件映射后进行读和分析,能让应用程序使用内存操作来操纵文件,而不必在文件里来回地读、写、移动文件指针。

有些操作,如放弃“读”一个字符,在以前是相当复杂的,用户需要处理缓冲区的刷新问题。在引入了映射文件之后,就简单的多了。应用程序要做的只是使指针减少一个值。

映射文件的另一个重要应用就是用来支持永久命名的共享内存。要在两个应用程序之间共享内存,可以在一个应用程序中创建一个文件并映射之,然后另一个应用程序可以通过打开和映射此文件把它作为共享的内存来使用。VC++使用内存映射文件处理大文件

文章标题:内存映射文件和直接缓冲区的区别,发布者:小编,转载请注明出处:https://worktile.com/kb/p/37900

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编认证作者
上一篇 2023年2月13日 上午2:23
下一篇 2023年2月13日 上午2:25

相关推荐

  • DevOps如何处理大规模项目

    DevOps在处理大规模项目时应遵循以下几个核心步骤:1、采纳微服务架构提供灵活性与可拓展性;2、持续集成和持续交付(CI/CD)实现自动化流水线;3、基础设施即代码(IaC)便于管理和自动化部署;4、容器化与编排工具以及5、监控和日志管理以确保系统健康和及时反馈。 微服务架构 的采用是处理大规模项…

    2024年1月18日
    18700
  • 公司办公流程管理系统有哪些

    常见的公司办公流程管理系统有:1、泛普办公流程管理系统;2、致远办公流程管理系统;3、华天动力办公流程管理系统;4、泛微办公流程管理系统;5、蓝凌办公流程管理系统;6、通达办公流程管理系统;7、友空间办公流程管理系统。 常见的公司办公流程管理系统 1、泛普办公流程管理系统 泛普OA系统是目前泛普具代…

    2022年11月16日
    1.6K01
  • data architecture 和 data structure 的区别是什么

    data architecture 和 data structure 的区别有:1、概念不同;2、应用场景不同;3、本质不同。概念不同是指data architecture是一种具有一定逻辑关系并且封装了相应操作的数据元素集合,而data structure描述了如何管理从收集到转换、分发和使用的数…

    2023年4月2日
    95500
  • devops运维岗是什么

    开篇即切入核心议题,DevOps运维岗指的是专注于软件开发(Development)与信息技术运维(Operations)的交集领域中,致力于提升系统的部署、管理与维护效率的专业职位。具体职责涉及多种自动化工具与实践的应用,以促进开发及运维流程的融合。这一职位关键在于持续集成和持续交付(CI/CD)…

    2024年3月26日
    7100
  • Linux文件权限

    Linux文件权限有:1、对文件进行读操作的权限(用r表示);2、对文件进行写操作的权限(用w表示);3、对文件进行执行操作的权限(用x表示)。对文件进行读操作的权限(用r表示)是指具有读取文件内容的权限。 一、Linux文件权限 1、对文件进行读操作的权限(用r表示) 对于单个文件来说是指具有读取…

    2023年3月23日
    48000
  • 如何评估进度管理的效果

    项目进度管理效果评估核心在于四个方面:1、是否遵循既定的时间表;2、资源使用的优化程度;3、风险控制和应对的及时性;4、利益相关者满意度。在这四者之中,对项目与既定时间表的符合度进行深入探讨尤为关键。 一、遵循时间表的评估方法 项目是否遵循既定的时间表是评量其进度管理是否合格的首要标准。用以衡量的工…

    2023年12月26日
    38500
  • oa智能化管理系统

    “智能化OA系统应如何选型和实施?” 在这个数字化转型的时代背景下,智能化OA(Office Automation)系统极大地提升了企业的管理效率和协作能力。合适的选择与实践路径对系统的成功落地至关重要。该决策过程通常涉及以下几个关键环节:1、明确组织需求、2、考虑易用性和兼容性、3、评估供应商的实…

    2024年1月15日
    19700
  • 网络oa办公

    标题:网络OA办公的实施策略及影响因素 网络OA办公是实现企业资源共享、提高办公效率与协作能力的有效手段。引入互联网技术后,网络OA办公成为提升业务处理速度和质量的关键环节。其中包括1、海量信息的快速处理、2、跨地域协作的便捷性、3、数据安全与保密的挑战、4、对员工技能的要求提高。特别是跨地域协作的…

    2024年1月16日
    22900
  • 如何管理一个新项目

    开篇便直接回应题目:启动一个新项目需贯彻周密的策划、资源配置、团队构建、风险控制以及持续监督与调整。具体而言,需要1、清晰界定项目目标、2、建立详实的项目计划、3、组建高效的项目团队、4、实施有效的资源分配、5、设置合理的进程监控机制、6、开展风险管理并做好应对预案、7、保持及时的沟通与信息流通。突…

    2024年1月8日
    21200
  • 项目变更管理的关键操作

    项目变更管理的关键操作是建立变更管理计划、建立明确的变更流程、使用专门的变更请求表格、评估变更的影响、优先考虑变更、确保所有利益相关者参与、记录所有的变更、及时通讯、整合变更到项目计划、监控变更的影响、训练和教育、持续改进变更管理过程、建立变更控制委员会、考虑外部因素、确保灵活性等。项目变更管理是项目管理的核心组成部分,旨在系统地识别、评估、决策和实施对项目计划或目标的任何变更。

    2023年10月31日
    46000

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部