[英]Emacs Buffer Allocation using mmap
为什么在 cygwin、freebsd 和 irix6-5 上默认激活mmap
缓冲区分配,但在 linux 上没有?
请参阅emacs/src/config.h
的USE_MMAP_FOR_BUFFERS
。 和emacs/configure.in
中的use_mmap_for_buffers
。
基于mmap
的访问不是优于正常的缓冲区分配吗?
默认的 glibc malloc() 使用 mmap 进行大分配; 来自 malloc(3) 联机帮助页。 “当分配大于 MMAP_THRESHOLD 字节的 memory 块时,glibc malloc() 实现将 memory 分配为使用 mmap(2) 的私有匿名映射。默认情况下,MMAP_THRESHOLD 为 128 kB,但可使用 mallopt(3) 进行调整。”
也许在其他平台上切换到 mmap 是为了解决自己不做的糟糕的 malloc() 实现?
mmap() 分配更容易以线程安全的方式实现,但 brk() 分配在 Linux 上慢了大约 10%。 看到这个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.