使用mmap进行Emacs缓冲区分配

时间:2011-06-13 08:09:38

标签: linux emacs configuration memory-management memory-mapped-files

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

请参阅USE_MMAP_FOR_BUFFERS中的emacs/src/config.h。 和use_mmap_for_buffers中的emacs/configure.in

基于mmap的访问 高级 是否正常缓冲区分配?

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:2)

mmap()分配更容易以线程安全方式实现,但brk()分配在Linux上慢了约10%。请参阅this question