【发布时间】:2015-09-26 16:23:46
【问题描述】:
我正在使用mmap'ed 文件作为虚拟内存区域 - 该文件是手动分配的,因为我想控制它的位置。在munmap 上,缓冲区的所有当前内容都刷新到文件中,但我并不真正需要文件内容。是否可以简单地丢弃 mmap 区域而不回写?
Linux 特定的解决方案是可以的。
我的意思是像
char* myswaparea = "/tmp/myswaparea";
int64_t len = 1LL << 30;
fd = open(myswaparea, O_CREAT|O_RDWR, 0600);
ftruncate(fd, len);
void* arena = mmap(NULL, len, .... fd ...);
/* use arena */
munmap(arena, len); /* here comes an unnecessary flush */
close(fd);
unlink(myswaparea);
【问题讨论】:
-
你试过 ftruncate(fd, 0); ?就在 munmap 之前...
标签: linux mmap virtual-memory