首页/系统/Linux 内核与性能调优速查/glibc 内存归还(arena 与 malloc_trim)
本包目录(357 条)
sysctl 内核参数72 条CPU 与调度60 条
内存与 OOM58 条
磁盘与 IO32 条网络栈调优98 条性能分析工具37 条

glibc 内存归还(arena 与 malloc_trim)

多线程 glibc 应用 RSS 偏高常与 per-thread arena 有关:可用 MALLOC_ARENA_MAX 限制 arena 数量,或调用 malloc_trim(0) 主动归还空闲堆。

环境变量MALLOC_ARENA_MAX=2/4
主动归还malloc_trim(0)(glibc)
观察smaps_rollup 的 Rss 与 Heap 段

示例

示例
MALLOC_ARENA_MAX=4 ./service
grep -i heap /proc/<pid>/smaps | head

C 片段

C 片段
#include <malloc.h>
malloc_trim(0); // 归还空闲堆尾与缓存

易错点

  • 归还效果受 mmap 阈值与堆碎片影响,未必立竿见影
  • 调 arena 上限可能影响高并发分配性能,压测后再定

数据来源与参考

  • glibc 手册 malloc(3)/mallopt(3)
  • Linux 内核 Documentation/filesystems/proc.rst
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌