← 中文资源

简体中文版本

分配压力

分配压力是内存分配速率,它决定回收频率与停顿分布——是 GC 调优只能在下游对症、而应用可以在上游根治的隐藏延迟输入。

阅读英文原文

概念定义

每个临时对象都是回收器未来的工作。分配速率决定这项工作被调度的频率。对延迟敏感的服务,每请求字节数是负载下停顿行为的领先指标。

工作机制

年轻代以分配速率被填满,回收频率 = 速率 ÷ 空间。晋升加快——临时对象幸存或对象过大——会把工作推进昂贵的老年代周期。逃逸分析通过栈分配不逃逸对象消除部分分配;代码形态——不必要地返回局部变量指针——会破坏它。

使用场景

停顿日志与流量相关、GC CPU 占比超过几个百分点、或 p99 跟随回收频率时就该削减。从画像的前几名分配点下手:重构循环、复用缓冲、换掉装箱类型、砍掉每请求脚手架。

常见误区

分配速率才是输入,停顿只是症状;堆更大只是推迟并放大每次回收,速率本身没变。也别只盯大对象——总字节数驱动年轻回收,海量小临时对象主导速率。不画像就优化必然打偏:热点几乎不在直觉指的位置;逃逸分析对版本与代码形态敏感,一次无辜重构就能让分配悄悄回堆。