使用mmap进行Emacs缓冲区分配

Nor*_*löw 8 linux emacs configuration memory-management memory-mapped-files

为什么mmap默认情况下在cygwin,freebsd和irix6-5上激活缓冲区分配但在linux上没有激活?

USE_MMAP_FOR_BUFFERSemacs/src/config.h.并use_mmap_for_buffersemacs/configure.in.

是不是mmap基于访问优于正常的缓冲区分配?

jan*_*neb 6

默认的glibc malloc()使用mmap进行大量分配; 来自malloc(3)联机帮助页."当分配大于MMAP_THRESHOLD字节的内存块时,glibc malloc()实现使用mmap(2)将内存分配为私有匿名映射.默认情况下,MMAP_THRESHOLD为128 kB,但可以使用mallopt(3)进行调整."

也许在其他平台上切换到mmap是为了解决那些不能自己做的差的malloc()实现?

  • @Nordlöw:从我上面引用的内容中看到"私人匿名映射"部分.也就是说,mmap(2)的flags参数是MAP_PRIVATE | MAP_ANONYMOUS.有关更多信息,请参见mmap(2)手册页. (2认同)