Lobsters | 📄 原文链接 | 2026-08-18 收录

Pony 的 Arena 分配器:让每线程追踪自己的内存,治愈无界增长

来源:ponylang.io — 2026-08

📋 概述

Pony 团队在把 TCP 压力测试加上「群涌式随机化」后,挖出一堆真 Bug,其中之一就是分配器的内存无界增长。旧的全局池式分配器因不追踪「谁分配了这块内存」,导致跨线程释放、不同尺寸槽、相邻空闲块合并三方面全部失效。新分配器借鉴 snmalloc 的区域化设计:每线程认领自己的 arena,跨线程释放分批路由给所有者,内存空置后归还 OS。测试中 1GiB 工作集在空闲后从 1,025MiB 回落到 27MiB。

🔑 核心要点

💡 金句

内存相邻即 bitmap 相邻,bitmap 相邻即一个连续区间——从来就是如此,只是旧的表示法不允许它发生。
← 返回 Lobsters 首页