静态分配与恒定工作:内存安全与稳定性的工程技巧
来源:matklad.github.io · 8 分
📋 概述
TigerBeetle 的作者 matklad 从一封讨论内存安全难题的邮件出发,分享两则工程原则。其一是“初始化后不再动态分配”——系统启动时指定可服务的最大请求数,超限即拒绝而非冒险扩张;其二是“恒定工作”——让对象总量固定不变,用预留的中性对象做空转,换取稳定延迟与更可穷举的状态迁移。
🔑 核心要点
- 先回应“内存安全最难的问题”:类型混淆常因对象池回收复用引发。
- 原则一:初始化后不再动态分配内存,以 --orders-max 之类上限拒绝超载。
- 刻意逼近上限的做法可避免 OOM killer 连累整个服务与调度进程。
- 原则二:引入中性“预留”对象使请求数守恒,强制显式书写状态迁移。
- 全量遍历恒定的对象集合更利于向量化与缓存预取,P100 延迟持平。
💡 金句
系统也许会在内存不足时无法启动,但一旦启动,就能优雅地扛住过载,在你扩容前持续提供服务。
👍 0
👎 0
← 返回 Hacker News 首页