gpt4 book ai didi

c# - 内存映射文件 : How much memory can be allocated for files

转载 作者:太空狗 更新时间:2023-10-29 23:10:46 25 4
gpt4 key购买 nike

我有很大的 CT 原始数据文件,最大可以超过 20 到 30GB。对于我们部门当前的大多数计算机,我们最多只有 3GB。但是为了处理数据,我们需要遍历所有可用数据。当然,我们可以通过读取和写入函数顺序遍历数据来做到这一点。但有时需要在内存中保留一些数据。

目前我有自己的内存管理,我在其中创建了一个所谓的 MappableObject。每个原始数据文件包含 20000 个结构,每个结构显示不同的数据。每个 MappableObject 都指向文件中的一个位置。

在 C# 中,我创建了一个部分工作的机制,它会在必要时自动 mps 和取消映射数据。多年前我就知道 MemoryMappedFiles,但在 .NET 3.5 中我拒绝使用它,因为我知道在 .NET 4.0 中它将在 native 可用。

所以今天我尝试了 MemoryMappedFiles,发现无法分配所需的内存。如果我有一个 32 位系统,并且我想分配 20GB,由于超出了逻辑地址空间的大小,它不起作用。这对我来说很清楚。

但是有没有办法像我这样处理这么大的文件呢?我还有什么机会?你们是怎么解决这些问题的?

谢谢马丁

最佳答案

我知道的唯一限制是您可以映射的文件的最大 View 的大小,它受地址空间的限制。内存映射文件可以大于地址空间。 Windows 需要在进程地址空间的连续 block 中映射文件 View ,因此最大映射的大小等于地址空间的最大空闲 block 的大小。文件系统本身对总文件大小的唯一限制。

看看这篇文章:Working with Large Memory-Mapped Files

关于c# - 内存映射文件 : How much memory can be allocated for files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5518084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com