为什么 mmap
缓冲区分配在 cygwin、freebsd 和 irix6-5 上默认激活,但在 linux 上却没有?
请参阅 emacs/src/config.h
中的 USE_MMAP_FOR_BUFFERS
。
以及 emacs/configure.in
中的 use_mmap_for_buffers
。
基于 mmap
的访问是否优于正常的缓冲区分配?
最佳答案
默认的 glibc malloc() 使用 mmap 进行大分配;来自 malloc(3) 联机帮助页。 “当分配大于 MMAP_THRESHOLD 字节的内存块时,glibc malloc() 实现使用 mmap(2) 将内存分配为私有(private)匿名映射。 MMAP_THRESHOLD 默认为 128 kB,但可以使用 mallopt(3) 进行调整。”
也许在其他平台上切换到 mmap 是为了解决本身不执行的糟糕的 malloc() 实现?
关于linux - 使用 mmap 的 Emacs 缓冲区分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6328002/