memory-mapped-files相关内容
内存屏障保证数据缓存是一致的.但是,它是否保证 TLB 是一致的? 我看到一个问题,即在线程之间传递 MappedByteBuffer 时,JVM(java 7 update 1)有时会因内存错误(SIGBUS、SIGSEG)而崩溃. 例如 final AtomicReferencembbQueue = new AtomicReference();//在后台线程中.MappedB
..
我正在研究使用 ByteBuffers 从内存映射文件构建(通过 FileChannel.map()) 以及内存中的直接 ByteBuffers.我正在尝试了解并发和内存模型约束. 我已经阅读了 FileChannel、ByteBuffer、MappedByteBuffer 等所有相关的 Javadoc(和源代码).很明显,一个特定的 ByteBuffer(和相关的子类)有一堆字段,状态不受
..
当我在 C++(11) 中读取文件时,我使用以下方法将它们映射到内存中: boost::interprocess::file_mapping* fm = new file_mapping(path, boost::interprocess::read_only);boost::interprocess::mapped_region* region = new mapping_region(*fm
..
我正在尝试将任意元素的向量存储在内存映射文件中(现在我正在尝试使用整数向量成功,但它应该可以使用任意对象的向量).我找到了很多关于使用共享内存这样做的文档,但没有正确使用内存映射文件.因为我已经成功地在内存映射文件中制作并使用了 R 树(比如在 那个例子),我试图用向量复制这个过程,但我想我错过了一些关键元素,因为它不起作用.这是我的代码: namespace bi = boost::inter
..
我在这里粘贴了一些使用 boost iostream 到 mmap & 的代码.然后写入映射文件: typedef unordered_map工作;int main(){工作 d;d[0] = "a";boost::iostreams::mapped_file_params 参数;params.path = "map.dat";params.new_file_size = 1000000000;
..
我有大量数据要分析 - 每个文件大约 5gigs.每个文件的格式如下: xxxxx yyyyy 键和值都可以重复,但键是按升序排列的.我正在尝试为此使用内存映射文件,然后找到所需的键并使用它们.这是我写的: if (data_file != ""){时钟开始=时钟();data_file_mapped.open(data_file);data_multimap = (std::multima
..
我已经使用 C# 来解决以下需求..- 创建一个可以快速接收大量数据的应用程序- 您必须能够在接收到更多数据时分析接收到的数据.- 使用尽可能少的 CPU 和磁盘 我对算法的想法是.. SIZE = 10MB创建一个大小为 SIZE 的 mmf关于收到的数据:如果数据不适合 mmf:将 mmf.size 增加 SIZE将数据写入 mmf -> 使用之前的“房间/空间"时,光盘上的大小以
..
我用 np.save() 保存了几个 numpy 数组,并将它们放在一起非常大. 是否可以将它们全部作为内存映射文件加载,然后将它们连接起来并切开所有这些文件,而无需将任何内容加载到内存中? 解决方案 使用 numpy.concatenate 显然是将数组加载到内存中.为了避免这种情况,您可以轻松地在新文件中创建第三个 memmap 数组,并从要连接的数组中读取值.更有效的方法是,您
..
这个问题不是任何这些现有问题的重复: 如何将仅存在于内存中的对象文件存储为存储系统内的文件? - 这个问题与 Java 的 File 无关API. 仅存在于 RAM 中的临时文件?- 这与我要问的很接近,除了 OP 没有询问如何从内存中创建文件以共享将它们传递给子进程 我也不是询问 Win32 的内存映射文件 - 因为它们本质上与我所追求的相反:内存映射文件是一个文件映射到进程的虚拟内存
..
使用内存映射文件读取(常规大小的文件)与使用 CreateFile ReadFile 组合进行相同操作相比有哪些缺点(如果有)? 解决方案 有了 ReadFile/WriteFile,你就拥有了确定性的错误处理语义.使用内存映射文件时,通过抛出异常返回错误. 此外,如果内存映射文件必须访问磁盘(或者更糟糕的是网络),您的内存读取可能需要几秒钟(甚至几分钟)才能完成.根据您的应用,这可
..
当尝试使用 boost::interprocess 将 std::vector 存储在内存映射文件中时,我收到异常 Exception throw: read访问冲突.当我尝试推回加载的向量时,但仅在调试模式下. 这个最小的示例代码(由@sehe 编写)取自 https://stackoverflow.com/a/29602884/2741329,它在调试模式下在 MSVC14 上崩溃并且多
..
有没有办法在 iOS 的磁盘上存储和加载原始图像数据,以节省解压的时间和内存并减少应用程序的脏内存占用? Paul Haddad 一直暗示类似这样的事情,我知道这种技术是用于使用OpenGL高效加载游戏纹理. 我的用例如果用户提供的全屏壁纸总是显示在背景中.目前我将它保存为 PNG 并在应用程序启动期间加载它.这浪费了用于解压缩图像的内存和 CPU.我想保存图像,然后将其作为内存映射文
..
我尝试将以下结构写入内存映射文件,但数组仍然有问题(写入时抛出异常,结构不能包含引用) [StructLayout(LayoutKind.Explicit)]结构索引条目{[FieldOffset(0)]公共字节密钥;[FieldOffset(4)]公共 int lastValueIdx;[FieldOffset(8)][MarshalAs(UnmanagedType.ByValArray, S
..
有没有办法检查有多少视图已映射到 Windows 上的内存映射文件? Linux 上类似于 shmctl(... ,IPC_STAT,...) 的东西? 解决方案 我同样需要访问共享视图的数量.所以我创建了这个问题:访问共享内存的数量映射文件视图 (Windows) 您可能会在那里找到适合您需求的解决方案. 根据 Scath 评论,我将在此处添加建议的解决方案,尽管优点应
..
我遇到了一个新问题,这是在为我的应用程序编写 IPC 时出现的. 在 UWP 之前,我能够成功地使用指令 using System.IO.MemoryMappedFiles;.现在我不能使用 using System.IO.MemoryMappedFiles; 而我需要它. 每个人都面临同样的问题吗?如果是,你是如何解决的? 我的应用不再编译. 我已经尝试重新导入 Syst
..
当我在 Windows 上创建共享内存段时(如 CreateFileMapping(INVALID_HANDLE_VALUE, ...)),除了创建更大的段并复制数据之外,还有什么方法可以调整它的大小? 我在 MSDN 中读到文件映射具有固定大小,但是否有可能在同一内存上创建新映射?就像在 Linux 中一样,您可以在其中使用 shm_open(),然后再次使用 ftruncate() 和
..
我正在尝试使用 Windows 服务创建一个内存映射文件,以便它可以保存许多其他 Windows 应用程序可以使用的静态数据. 我的问题是,当我启动服务时 - 该服务可以轻松读取和写入内存映射文件.但是,Windows 应用程序不能.他们收到文件未找到错误. 使用同一个类来读写内存映射文件,在两个windows应用程序中我都没有问题.所以,我相信内存映射文件的使用是正确的,但还有其他东
..
我使用下面的代码来衡量读取内存映射文件的大的、顺序的读取与仅调用ReadFile相比的性能差异: HANDLE hFile = CreateFile(_T("D:\\LARGE_ENOUGH_FILE"),FILE_READ_DATA, FILE_SHARE_READ |FILE_SHARE_WRITE、NULL、OPEN_EXISTING、FILE_FLAG_NO_BUFFERING, NUL
..
有没有一种方法可以将 numpy memmap 数组保存到 .npy 文件中?显然,有一种方法可以从 .npy 文件中加载这样的数组,如下所示 data = numpy.load("input.npy", mmap_mode='r') 但是刷新文件并不等同于以 .npy 格式存储它. 如果刷新是唯一的方法,那么有没有办法推断存储数组的形状?我更喜欢在另一个脚本中自动存储和检索(可能再次作
..
我从userfaultfd的文档中看到了 https://manpages.debian.org/testing/manpages-dev/userfaultfd.2.en.html http://man7.org/linux/man-pages/man2/ioctl_userfaultfd.2.html 从内核4.11开始,userfaultfd将开始支持共享地图.但是,从某种程度上
..