[英]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.