使用内存映射文件MMF实现大数据量导出时的内存优化

本文介绍了如何使用内存映射文件(MMF)进行大数据量导出时的内存优化,以Excel为例,详细阐述了通过MemoryMappedFile和MemoryMappedViewAccessor对象实现数据存储的方法,并提醒了在使用过程中需要注意的事项,如容量限制、数据存储转换等。通过这种方式,可以在控制内存使用的同时,增加导出的时间成本。
摘要由CSDN通过智能技术生成

前言

     导出功能几乎是所有应用系统必不可少功能,今天我们来谈一谈,如何使用内存映射文件MMF进行内存优化,本文重点介绍使用方法,相关原理可以参考文末的连接

实现

     我们以单次导出一个excel举例(csv同理),excel包含1~n个sheet,在每个sheet中存储的按行和列的坐标在单元格存储具体数据,如果我们要使用MMF,第一个要考虑的就是如何将整个excel合理的存储到MMF中。这里我们引入MMF两个对象:

          MemoryMappedFile --表示内存映射文件

          MemoryMappedViewAccessor --表示随机访问的内存映射文件视图


    使用MemoryMappedFile.CreateNew(string mapName, long capacity)可以得到一个指定名称和指定大小的内存映射文件,以下简称mmf
          * 这里需要注意的是capacity为long类型,以字节为单位,通过计算可知文件大小上限为1G
    使用mmf.CreateViewAccessor(long offset, long size)可以得到一个从指定位置开始的指定大小空间的访问器,以下简称accessor
          * 这里同样需要注意的是size的大小,如果加上offset超过文件大小,会报System.UnauthorizedAccessException: Access to the path is denied.
    考虑到数据体积和管理成本,这里使用mmf对应sheet使用accessor对应一行数据
     

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值