350得票6回答
何时应该使用mmap进行文件访问?

POSIX环境至少提供两种文件访问方式。一种是标准的系统调用open()、read()、write()等,另一种是使用mmap()将文件映射到虚拟内存中。 何时最好使用其中一种方法而不是另一种方法?它们各自的优点有哪些,值得包括这两个接口呢?

243得票13回答
mmap()与读取数据块的区别

我正在开发一个程序,将要处理可能大小为100GB或更大的文件。这些文件包含了长度可变的多组记录。我已经完成了第一个实现,并且现在致力于提高性能,特别是在更有效地进行I/O操作方面,因为输入文件需要被扫描多次。 有没有一些使用mmap()和C++的fstream库读取块的经验法则?我的想法是从磁...

102得票2回答
当包含汇编文件时,从mmap中获得意外的执行权限

我正在为此烦恼。在我的项目中,当我使用mmap分配内存时,映射(/proc/self/maps)显示它是一个可读和可执行的区域,尽管我仅请求了可读内存。经过查看良好的strace(系统调用跟踪工具)和其他调试,我能够确定似乎唯一可以避免这个奇怪问题的是:从该项目中删除汇编文件,只留下纯C代码。...

80得票1回答
在使用mmap之后,我需要保持文件处于打开状态吗?

我有一个程序需要将许多(100个)大小为10-100MB的文件进行映射。我需要同时将它们全部映射。 目前,我在程序开始时调用open,然后是mmap,在程序结束时是munmap和close。 通常情况下,在运行程序之前,我必须通过运行ulimit -n来调整打开文件的限制。 问题是我是否...

77得票2回答
Linux共享内存:shmget()和mmap()有什么区别?

在这个帖子中,建议OP在Linux中使用mmap()而不是shmget()来获取共享内存。 我参考了这个页面和这个页面的一些文档,但第二个页面给出了一个关于mmap()的不明确的示例。 作为一个几乎是新手,并且需要在两个进程之间共享一些信息(以文本形式),我应该使用shmget()方法还是m...

73得票3回答
将整个大文件映射到内存中的Mmap()函数

我正在尝试使用以下代码(test.c)来“mmap”一个大小约为8GB的二进制文件。#include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <sys/mman.h> ...

70得票8回答
malloc实现会将已释放的内存返回给系统吗?

我有一个长时间运行的应用程序,需要频繁的内存分配和释放。任何malloc实现是否会将释放的内存返回给系统? 在这方面,以下是每个库的行为: ptmalloc 1、2(glibc默认)或3 dlmalloc tcmalloc(谷歌线程malloc) Solaris 10-11默认的malloc...

59得票7回答
malloc vs mmap in C

我建立了两个程序,一个使用 malloc,另一个使用 mmap。使用 mmap 的执行时间比使用 malloc 的时间要少得多。 例如,当你使用 mmap 时,你避免了对系统的读/写调用,并且内存访问更少。但是,除此之外,在使用 mmap 而不是 malloc 时还有其他优点吗? 非常感谢。

49得票8回答
为什么Python的mmap不能处理大文件?

[编辑:此问题仅适用于32位系统。如果您的计算机、操作系统和Python实现均为64位,则映射大型文件可靠且极其高效。] 我正在编写一个模块,其中包括对文件进行按位读取的功能。这些文件可能很大(数百GB),因此我编写了一个简单的类,让我可以像处理字符串一样处理文件,并隐藏所有的寻址和读取细节...

49得票8回答
在Mac上安装Laravel,php artisan migrate报错:没有这个文件或目录。

从git上将一个完全可工作的laravel项目拉到运行MAMP的mac电脑上。项目在linux机器上运行得很好。 composer install 执行“php artisan migrate”命令,出现以下错误: [PDOException] ...