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

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

相关推荐

  • 大型互联网社区是使用什么架构

    大型互联网社区是使用什么架构:1、单节点架构;2、集群架构;3、分布式集群架构。单节点架构是指,在互联网业务发展的初期,通常是一些尝试性的产品探索/试验,而这些需求往往就是需求提出者的一个瞬间想法/点子,衍生完善而来。 一、单节点架构 在互联网业务发展的初期,通常是一些尝试性的产品探索/试验,而这些…

    2023年6月7日
    200
  • linux安装软件命令

    linux安装软件的命令有:1、rpm命令;2、dpkg命令;3、yum命令。rpm命令指“rpm -ivh 包名”命令,在指定目录下执行该命令,可以将软件包下载到该目录下。dpkg命令是下载dep文件的命令,deb文件是linux发行版debian系统的安装包格式。 一、rpm命令 简介: rpm…

    2023年3月19日
    56300
  • 通信原理中通信电路和信道的区别联系

    通信原理中通信电路和信道的区别:1、概念不同;2、功能不同;3、物理实现不同。通信原理中通信电路和信道的联系:1、目的相同;2、所处地位相同;3、现状相同。概念不同是指通信电路是利用电子通信设备传输信息的通路,而信道是媒介。 一、通信原理中通信电路和信道的区别 1、概念不同 通信电路:通信电路是指在…

    2023年4月2日
    6100
  • wed的文件漏洞有哪些

    wed的文件漏洞有:1、SQL注入;2、文件上传漏洞;3、目录遍历;4、XSS(跨站脚本攻击);5、本地文件包含;6、全局变量覆盖。SQL注入就是通过把 SQL 命令插入到 Web 表单,递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的 SQL 命令的目的。

    2023年1月11日
    3200
  • 项目进度分解一般用什么软件

    项目进度分解一般用以下软件:一、Worktile;二、PingCode;三、进度猫;四、Podio;五、Asana;六、ActiveCollab;七、Paymo;八、ProofHub;九、Basecamp。Worktile 是国内的一款老牌通用项目进度管理系统,Worktile 具备单项目、项目集、…

    2023年4月27日
    3200
  • 系统数据库有哪些

    系统数据库有:1、master;2、model;3、msdb;4、resource;5、tempdb。其中,master数据库是SQL Server中最重要的数据库,记录了SQL Server系统中所有的系统信息。

    2023年1月5日
    46600
  • 建立一个知识库应该用什么软件

    以下软件可以打造自己的知识库:一、Evernote;二、OneNote;三、Notion;四、TiddlyWiki;五、DEVONthink。Evernote 是一个功能强大的笔记应用,它具有跨平台性,可以在多个设备上同步数据,同时可以对笔记进行分类、标签和搜索等操作,非常适合作为个人知识库的工具。…

    2023年4月16日
    3700
  • okr管理软件哪个最好

    okr管理软件有:一、Worktile;二、PingCode;三、Vision;四、Zokri。Worktile 是国内最早也是最成熟的OKR工具。Worktile 覆盖了OKR设定、展示、更新、评分的完整周期管理,并且目标还能与具体项目/任务关联,它能够追踪公司级、部门级、个人级目标的进度,帮助团…

    2023年3月31日
    4900
  • Linux明明有文件却找不到

    Linux明明有文件却找不到的解决方法:1、打开终端命令行窗口;2、使用“find”命令来查找文件;3、使用通配符“*”来进行文件查找;4、回车执行命令完成文件查找。打开终端命令行窗口是指打开Linux系统中的命令行窗口。 一、Linux明明有文件却找不到的解决方法 1、打开终端命令行窗口 打开Li…

    2023年3月23日
    78300
  • microsoft teams是什么软件

    Microsoft Teams 是一款基于聊天的智能团队协作工具,可以同步进行文档共享,并为成员提供包括语音、视频会议在内的即时通讯工具。它提供完整的联机会议解决方案,是一个强大的团队工作中心,它能够将聊天、会议、呼叫、文件和应用整合到一个统一的共享工作区中。 一、Microsoft Teams 简…

    2023年3月23日
    5500

发表回复

登录后才能评论
联系我们
站长微信
站长微信
分享本页
返回顶部