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

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

相关推荐

  • 企业费用管理平台大盘点:10款优选

    本文介绍了以下工具:合思、明道云、SAP Concur、管家婆、Spendesk、用友U8、Yokoy、金蝶K/3、Zoho Expense、AIrbase。 许多企业在繁琐的报销流程中消耗了大量人力和时间,效率低下,数据不准确,财务人员和员工都苦不堪言。本文整理了2024年最值得推荐的10款费用…

    2024年7月21日
    200
  • 差旅报销平台推荐:9款专业工具

    本文将介绍9款差旅报销平台:合思、Expensify、用友U8、TravelPerk、SAP Concur、金蝶K/3、Navan、管家婆、Happay。 差旅报销一直是企业管理中的一个大难题。繁琐的流程、复杂的审批、频繁的错误和时间浪费,这些都让财务和员工头疼不已。本文将介绍2024年最靠谱的9款…

    2024年7月21日
    000
  •  10款主流报销系统推荐:企业选型必看指南

    本文将介绍10款国内外报销系统:合思、Concur、用友U8、明道云、Zoho Expense、Expensify、Spendesk、NetSuite、Emburse Chrome River、AIrbase。 在选择报销系统时,很多企业常常面临一个棘手的问题:市场上有太多选择,如何才能找到最适合自…

    2024年7月20日
    200
  • 企业必备的9款财务报销管理软件

    本文将介绍9款财务报销系统:合思、Concur、用友U8、金蝶云星空、明道云、管家婆、Zoho Expense、简道云、Spendesk。

    2024年7月20日
    000
  • 企业工时记录软件的10大选择

    国内外主流的10款工时计算软件对比:PingCode、Worktile、Tita、易企秀、奇鱼、Teambition、Timely、Toggl Track、RescueTime、ClickUp。 在忙碌的工作中,记录和管理工时常常是令人头疼的问题。工时记录软件的选择不仅能帮你省时省力,还能大幅提高团…

    2024年7月19日
    800

发表回复

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

400-800-1024

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

分享本页
返回顶部