为什么mmap
在 cygwin、freebsd 和 irix6-5 上默认激活缓冲区分配,但在 linux 上没有?
见USE_MMAP_FOR_BUFFERS
中emacs/src/config.h
。并且use_mmap_for_buffers
在emacs/configure.in
.
mmap
基于访问不是优于普通缓冲区分配吗?
为什么mmap
在 cygwin、freebsd 和 irix6-5 上默认激活缓冲区分配,但在 linux 上没有?
见USE_MMAP_FOR_BUFFERS
中emacs/src/config.h
。并且use_mmap_for_buffers
在emacs/configure.in
.
mmap
基于访问不是优于普通缓冲区分配吗?
默认的 glibc malloc() 使用 mmap 进行大分配;来自 malloc(3) 联机帮助页。“当分配大于 MMAP_THRESHOLD 字节的内存块时,glibc malloc() 实现使用 mmap(2) 将内存分配为私有匿名映射。MMAP_THRESHOLD 默认为 128 kB,但可使用 mallopt(3) 进行调整。”
也许在其他平台上切换到 mmap 是为了解决自己不做的糟糕的 malloc() 实现?
mmap() 分配更容易以线程安全的方式实现,但 brk() 分配在 Linux 上要慢 10%。看到这个问题。