连续可用率是核心指标,定义为最大连续空闲块大小÷总内存大小×100%,反映外部碎片真实程度;辅以碎片熵值衡量空闲块尺寸离散度;清除后若空闲块数上升而最大连续块下降,表明碎片加剧。

直接用“已用内存块数 / 总内存块数”这种比率无法反映标记-清除算法的真实劣化程度——它只体现占用率,不体现碎片分布。真正关键的是:**空闲空间是否能被有效利用**。所以通用度量器必须同时捕获“空闲总量”和“最大可用连续空闲块”的关系。
核心指标:连续可用率
定义为:最大连续空闲块大小 ÷ 总内存大小 × 100%。它直击外部碎片本质——哪怕空闲率高达80%,若最大连续块只有总内存的5%,就说明标记-清除已严重劣化,大对象分配大概率失败。
实现时可用一个整型数组模拟内存页状态(0=空闲,1=已用),一次遍历即可算出最大连续0序列长度。比维护位图或链表更轻量、无锁、适合高频采样。
辅助指标:碎片熵值
仅看最大块有盲区(比如大量中等尺寸空闲块分散存在)。可引入类似信息熵的离散度指标:
一款AI工具,主要用于管理 OpenClaw 所使用的来自 OpenRouter 的免费 AI 模型。自动按质量对模型进行排序,配置回退机制以应对速率限制,并更新 opencla...,适合需要提升相关任务效率的用户。
- 将空闲块按大小分桶(如4KB)
- 统计每桶空闲块数量,归一化得概率分布 p₁…pₙ
- 计算熵 H = −Σ pᵢ log₂ pᵢ
H 越高,说明空闲块尺寸越杂乱、越难匹配典型请求,即碎片结构更“恶劣”。该值可与连续可用率交叉验证:两者同时恶化,基本确认标记-清除已失控。
配套观测点:清除后残差分析
标记-清除每次执行后,记录三个瞬时快照:
- 清除前空闲块数
- 清除后空闲块数(注意:通常会变多,因释放了零散对象)
- 清除后最大连续空闲块大小
若后两项呈现“空闲块数↑ + 最大连续块↓”趋势,就是算法劣化的明确信号——说明新释放的内存插在旧空闲块之间,把大块切成了小块,典型的碎片加剧模式。
避免常见误判
不依赖单一阈值报警。例如不能只设“连续可用率










