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

内存映射文件和直接缓冲区的区别是:直接缓冲区是在用户态里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

相关推荐

  • 为什么要学习项目管理

    学习项目管理有助于提升工作效率、提高团队协作能力、增强风险管理能力、提升职业发展空间。提升工作效率是项目管理的核心优势之一。通过系统化的项目管理方法,可以更有效地分配资源、设定明确的目标和时间表,从而确保项目在规定的时间和预算内完成。项目管理工具如甘特图、任务列表和资源管理表格,可以帮助管理者更清晰…

    2024年8月6日
    000
  • 项目管理师是干什么的

    项目管理师的主要职责包括项目规划、资源管理、风险控制、进度监督、沟通协调、质量保证、预算管理、报告编写等。其中,项目规划是项目管理师的重要任务之一。项目规划包括制定详细的项目计划,明确项目的目标、范围、时间表和资源需求。项目管理师需要确保所有团队成员理解项目的目标和任务,并制定合理的时间表和资源分配…

    2024年8月6日
    000
  • 敏捷项目管理是什么

    敏捷项目管理是指一种以迭代、增量方法管理和实施项目的方式,旨在更灵活、高效地响应变化需求和客户反馈。这种方法强调团队合作、自组织团队、频繁交付可用产品以及持续改进。敏捷项目管理常用的框架包括Scrum、Kanban和XP(极限编程)。迭代是敏捷项目管理的核心之一,项目被分解为多个小的迭代周期,每个周…

    2024年8月6日
    000
  • 项目管理工程师做什么

    项目管理工程师主要负责对项目进行规划、实施、监控和控制,以及关闭项目的全过程管理。他们的职责包括:确定项目目标和范围、制定项目计划和预算、协调项目团队、解决项目中的问题和风险、监控项目进度以及确保项目的质量和满足客户需求等。 其中,确定项目目标和范围是项目管理工程师的重要职责。在项目开始前,项目管理…

    2024年8月6日
    000
  • 项目管理是什么意思

    项目管理,顾名思义,是对项目从开始到结束的全过程进行规划、组织、激励和控制的一种管理方法,以实现特定的目标和满足特定的成功标准。这是一种策略性的方法,将资源、技能、工具和技术统一协调起来,达成项目的目标。它涵盖了项目的四个主要阶段:启动、计划、执行和结束,每个阶段都有各自的任务和目标,需要项目经理和…

    2024年8月6日
    000

发表回复

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

400-800-1024

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

分享本页
返回顶部