从分代预算到 DATAS:.NET GC 调优到底在调什么关于 .NET GC 的资料里,“Server GC 吞吐高、Workstation GC 延迟低”"把 GC.Collect 去掉就好了"这类结论流传得比机制本身更广。结果是在容器里把 ServerGarbageCollection 打开、堆内存翻了三倍,或者照着旧文调 GCLatencyMode 却发现毫无变化。这篇想讲清楚一件事:GC 的所有可调参数,最终都收敛到两个量上——gen0 预算和堆的回收目标。理解这两个量怎么被算出来,DATAS 的取舍也就自然清楚了。