每日一题:.NET 的 GC是如何分代工作的?

.NET 的 GC(垃圾回收)是如何分代工作的?什么是 LOH(大对象堆)?为什么频繁分配大对象会导致性能问题?生产中如何规避?

参考答案:

.NET 的 GC 采用分代回收机制,将托管对象按生命周期分为 Gen0、Gen1、Gen2。Gen0 主要存放短生命周期对象,回收频繁但代价低;对象多次存活后会晋升到 Gen1、Gen2,回收次数少但成本高。

LOH(Large Object Heap)用于存放大于等于约 85KB 的对象,这类对象不会进入 Gen0,而是直接分配到 LOH。传统 GC 对 LOH 不做压缩,频繁创建和释放大对象容易造成内存碎片,导致进程占用内存持续升高、Full GC 变多,进而引发接口抖动或卡顿。

生产中应尽量避免频繁分配大对象,如超大数组、字符串拼接结果;可通过对象复用(ArrayPool)、拆分数据结构、流式处理等方式减少 LOH 压力。在高内存场景下,合理监控 Gen2 / LOH 分配情况,往往比盯 CPU 更重要。核心原则是:减少短时间内的大对象分配,比"调 GC 参数"更有效。

相关推荐
CoovallyAIHub15 小时前
从春晚机器人到零样本革命:YOLO26-Pose姿态估计实战指南
深度学习·算法·计算机视觉
CoovallyAIHub15 小时前
Le-DETR:省80%预训练数据,这个实时检测Transformer刷新SOTA|Georgia Tech & 北交大
深度学习·算法·计算机视觉
CoovallyAIHub15 小时前
强化学习凭什么比监督学习更聪明?RL的“聪明”并非来自算法,而是因为它学会了“挑食”
深度学习·算法·计算机视觉
CoovallyAIHub16 小时前
YOLO-IOD深度解析:打破实时增量目标检测的三重知识冲突
深度学习·算法·计算机视觉
牧马人win16 小时前
SmartDapper.Repository
.net
NAGNIP1 天前
轻松搞懂全连接神经网络结构!
人工智能·算法·面试
NAGNIP1 天前
一文搞懂激活函数!
算法·面试
董董灿是个攻城狮1 天前
AI 视觉连载7:传统 CV 之高斯滤波实战
算法
爱理财的程序媛1 天前
openclaw 盯盘实践
算法