00-Unity和C#的GC剖析与对比-全篇导览

Unity 和 C# 的 GC 剖析与对比 --- 全篇导览

系列总览 :103 篇文章 · 16 个篇章 · 16 个主题文件夹

定位 :从认知到源码,从原理到实战的 GC 技术百科全书

目标读者:Unity 游戏开发者、C# 后端开发者、性能优化工程师、技术面试准备者


📖 为什么需要这个系列?

垃圾回收(Garbage Collection, GC)是每个 C# 开发者都无法回避的核心话题。在 Unity 游戏开发中,GC 问题更是性能优化的头号敌人------一次不当的 GC 触发就可能导致帧率骤降、卡顿甚至闪退。然而,GC 并非黑盒不可知:从 Mono 的古老 Boehm GC,到 SGen 的分代收集,再到 Unity 的增量式 GC,以及 .NET Core 的高性能 Server GC,每种 GC 都有其设计哲学、适用场景和性能特征。

本系列旨在填补中文技术社区在 GC 深度剖析领域的空白,带你从四个层次逐步深入:

层次 解决的问题
认知层 GC 为什么存在?内存管理的本质矛盾是什么?
原理层 Mark-Sweep 怎么工作?分代 GC 为什么快?
源码层 ⭐ 最核心的价值------四大 GC(Mono SGen / Boehm / Unity Incremental / .NET Core)逐行注释级源码解读
实战层 如何在真机项目中诊断、优化、甚至定制 GC?

🗺️ 篇章总览

复制代码
Unity和C#的GC剖析与对比/
├── 00-全篇导览与书写计划/   (1篇)  系列总览与导览说明
├── 01-认知篇/               (6篇)  GC的本质与内存模型
├── 02-原理篇/               (8篇)  GC核心算法与机制
├── 03-架构篇/               (7篇)  五大GC运行时架构
├── 04-源码深度-Mono GC/     (5篇)  Mono SGen 源码逐行解读
├── 05-源码深度-Boehm GC与IL2CPP/ (5篇) Boehm GC 源码逐行解读
├── 06-源码深度-Unity增量式GC/    (5篇) Incremental GC 源码逐行解读
├── 07-源码深度-.NET Core GC/     (6篇) .NET Core GC 源码逐行解读
├── 08-核心技术-性能优化篇/  (10篇) 语言/引擎/工程三层优化体系
├── 09-核心技术-内存管理篇/  (6篇)  资源生命周期与GC协同
├── 10-核心技术-托管互操作篇/(6篇)  C#/C++边界与零GC方案
├── 11-演进篇-GC发展史/      (5篇)  三大GC发展线横向对比
├── 12-实战篇-问题诊断/      (8篇)  Profiler/快照/CI诊断体系
├── 13-实战篇-优化案例/     (10篇) 按游戏类型分类的案例解析
├── 14-进阶篇-定制化GC实战/  (5篇)  从零构建自定义GC
├── 15-面试篇/              (10篇) 连锁追问树面试指南
└── 16-附录/                 (3篇)  术语/资源/版本

📚 各篇章详解

00-全篇导览与书写计划(1 篇)--- 系列导航

编号 文件名 核心内容
001 00-全篇导览 系列总览、篇章地图、推荐阅读路径、内容统计

01-认知篇(6 篇)--- GC 的本质与内存模型

解决什么问题:GC 为什么存在?内存管理的本质矛盾是什么?C# 和 Unity 的内存模型有何不同?

编号 文件名 核心内容 关键问题
002 01-认知篇-GC存在的根本原因 自动内存管理 vs 手动管理、GC 的设计目标与权衡 GC 为什么是必要的?
003 01-认知篇-内存管理的本质矛盾 吞吐量 vs 暂停时间 vs 内存开销的不可能三角 为什么没有完美的 GC?
004 01-认知篇-C#内存模型深度解析 托管堆/栈、值类型/引用类型、GC Roots 定义 C# 的内存是如何组织的?
005 01-认知篇-Unity内存全景 托管/原生/引擎/GPU 四层内存边界划分 Unity 的内存边界在哪里?
006 01-认知篇-GC性能归因分析 算法缺陷 vs 使用不当、常见归因误区 GC 问题到底是谁的锅?
007 01-认知篇-总览-五大GC全景对比 Mono SGen/Boehm/Incremental/.NET Core GC/Server GC 总览 五大 GC 各有什么优缺点?

02-原理篇(8 篇)--- GC 核心算法与机制

解决什么问题:GC 的核心算法是什么?分代、增量、并发这些技术各自解决了什么问题?

编号 文件名 核心内容 关键问题
008 02-原理篇-Mark-Sweep与变种算法 Mark-Sweep / Mark-Compact / Copying 算法原理与对比 三种经典算法各有什么优劣?
009 02-原理篇-分代GC(Generation GC) 代际假说、新生代/老年代、晋升策略、Write Barrier 分代 GC 为什么快?
010 02-原理篇-大对象堆(LOH) LOH 定义、分配策略、碎片化问题、LOH 压缩 大对象为什么特殊对待?
011 02-原理篇-GC Roots与对象图遍历 Roots 种类、对象图遍历算法(BFS/DFS)、三色标记 GC 如何知道哪些对象是活的?
012 02-原理篇-Finalization机制深度解析 Finalize 队列、复活现象、Dispose 模式、析构函数 Finalizer 是如何工作的?有什么陷阱?
013 02-原理篇-增量式GC与并发GC 增量式/并发式/并行式 GC 的区别、写屏障、安全点 如何减少 GC 暂停时间?
014 02-原理篇-GC暂停时间的本质 Stop-The-World、安全点(Safepoint)、GC 触发时机、暂停来源分析 GC 暂停到底花在了哪里?
015 02-原理篇-GC的视野边界 GC 能管理什么/不能管理什么、非托管资源的 GC 视角、句柄引用 GC 的管控范围有多大?

03-架构篇(7 篇)--- 五大 GC 运行时架构

解决什么问题:不同 GC 运行时的架构是如何设计的?它们在运行时中如何嵌入和协调?

编号 文件名 核心内容 关键问题
016 03-架构篇-Mono GC架构解析 Mono 运行时架构、SGen GC 嵌入位置、GC 线程模型 Mono 的 GC 是如何融入运行时的?
017 03-架构篇-Boehm GC架构解析 Boehm 保守式 GC 原理、IL2CPP 中的 Boehm 集成、保守 vs 精确 IL2CPP 为什么用 Boehm?它有什么限制?
018 03-架构篇-SGen GC架构解析 SGen 分代式设计、Nursery / Major Heap、并行标记 SGen 相比 Boehm 提升了什么?
019 03-架构篇-Unity增量式GC架构解析 增量式 Mark-Sweep 设计、时间分片策略、Unity 中的定制改动 Unity 增量式 GC 是怎么减少卡顿的?
020 03-架构篇-.NET Core GC架构解析 Server GC / Workstation GC、SOH/LOH/POH、段管理、后台 GC .NET Core GC 为什么是工业级标杆?
021 03-架构篇-运行时与GC的嵌入关系 运行时初始化、GC 注册 Roots、内存分配路径、GC 触发链路 GC 在运行时启动后是如何被调用的?
022 03-架构篇-平台差异的深层原因 Android / iOS / Windows / WebGL 各平台 GC 差异及根因 为什么同一代码在不同平台 GC 行为不同?

04-源码深度-Mono GC(5 篇)--- Mono SGen 逐行解读

解决什么问题:Mono SGen 的源码是如何实现的?关键数据结构和算法是怎样的?

编号 文件名 核心内容 对应源码文件
023 04-源码-Mono GC总览与数据结构 sgen-gc.h/c 核心结构体、线程局部分配、全局堆结构 sgen-gc.c, sgen-gc.h
024 04-源码-Mono GC分配路径深度解析 分配管线、bump-pointer 分配、TLAB、大对象分配 sgen-alloc.c
025 04-源码-Mono GC标记阶段逐行解读 标记栈、对象图遍历、灰色节点处理、并行标记 sgen-mark.c, sgen-gray.h
026 04-源码-Mono GC清扫与压缩阶段 Sweep 算法、空闲链表构建、Compact / Copying 实现 sgen-sweep.c, sgen-copy-object.h
027 04-源码-Mono GC分代与晋升机制 Nursery 收集、Major 收集、代际晋升、Remembered Set sgen-nursery.c, sgen-major.c

05-源码深度-Boehm GC 与 IL2CPP(5 篇)--- Boehm GC 逐行解读

解决什么问题:Boehm GC 作为保守式 GC 的代表,其源码实现有何特点?IL2CPP 如何与之集成?

编号 文件名 核心内容 对应源码文件
028 05-源码-Boehm GC总览与数据结构 标记-清扫循环、GC_proc 结构体、堆段管理 alloc.c, gc_priv.h
029 05-源码-Boehm GC标记阶段 保守标记算法、root 发现、partial clean 机制 mark.c, dbg_mlc.c
030 05-源码-Boehm GC分配与碎片管理 分大小类分配、空闲链表、碎片合并、懒惰 Free alloc.c, reclaim.c
031 05-源码-Boehm GC在IL2CPP中的集成 IL2CPP 如何适配 Boehm、GC 排除列表、内存屏障 il2cpp-gc.h, boehm-gc.cpp
032 05-源码-Boehm GC的局限与替代演进 保守式的根因限制、SGen 替代计划、精确 GC 在 IL2CPP 中的未来 跨文件分析

06-源码深度-Unity 增量式 GC(5 篇)--- Incremental GC 逐行解读

解决什么问题:Unity 增量式 GC 是如何实现时间分片的?与标准 Mark-Sweep 有何不同?

编号 文件名 核心内容 对应源码文件
033 06-源码-Incremental GC总览与设计 增量式 GC 设计目标、与 SGen 的关系、配置参数 GarbageCollector.h
034 06-源码-增量标记算法实现 三色标记增量版、work 分片、写屏障实现 IncrementalGC.cpp
035 06-源码-时间分片与调度策略 每帧分配时间片、动态调整算法、暂停预测 GarbageCollector.cpp
036 06-源码-增量式GC的分配与写屏障 Card Table 实现、对象引用变更追踪、脏卡处理 WriteBarrier.cpp
037 06-源码-增量式GC的性能特征与限制 增量式 GC 的适用场景、CPU 开销分析、与并发 GC 对比 综合对比分析

07-源码深度-.NET Core GC(6 篇)--- .NET Core GC 逐行解读

解决什么问题:.NET Core GC 作为当今最先进的 GC 之一,其源码设计有何精妙之处?

编号 文件名 核心内容 对应源码文件
038 07-源码-.NET Core GC总览与架构 段管理、堆结构、GC 分代、Server/Workstation 模式 gc.h, gcimpl.h
039 07-源码-.NET Core GC分配路径 分配上下文、bump 分配、budget 管理、LOH/VOH 分配 gc.cpp (allocate)
040 07-源码-.NET Core GC标记与扫描 并行标记、背景标记、卡片标记、对象图遍历优化 gc.cpp (mark)
041 07-源码-.NET Core GC清扫与压缩 计划阶段、压缩阶段、空闲列表管理、页内碎片整理 gc.cpp (sweep/compact)
042 07-源码-.NET Core GC后台GC实现 后台标记、后台清扫、并发线程、与前台 GC 交互 gc.cpp (background)
043 07-源码-.NET Core GC的极致优化技术 段预映射、大页面支持、CPU 分组亲和、GC 感知的分配 gc.cpp (advanced)

08-核心技术-性能优化篇(10 篇)--- 三层优化体系

解决什么问题:如何在 C# 和 Unity 中系统性地减少 GC 压力?

编号 文件名 核心内容 优化维度
044 08-优化-字符串与文本操作的GC陷阱 字符串拼接、Substring、StringBuilder、ToString 优化 语言层面
045 08-优化-LINQ与函数式编程的GC代价 LINQ 闭包分配、迭代器、Select/Where GC 分析、替代方案 语言层面
046 08-优化-闭包与匿名函数的GC分配 捕获变量导致的对象分配、委托分配、static 缓存优化 语言层面
047 08-优化-装箱与反射的GC开销 值类型装箱、typeof/GetType/MethodInfo 缓存方案 语言层面
048 08-优化-值类型与struct的正确使用 栈分配、Copy 开销、只读 struct、ref return、in 参数 语言层面
049 08-优化-async状态机与Task的GC优化 状态机结构体、async ValueTask、Pooling、ConfigureAwait 语言层面
050 08-优化-Span与零分配编程 Span/Memory 原理、栈分配数组、字符串切片零分配 语言层面
051 08-优化-Unity API的GC陷阱清单 GameObject.Find/Tag/Mesh/Physics 等 API 触发 GC 分析 引擎层面
052 08-优化-渲染管线与音频系统的GC分析 粒子系统、物理引擎、音频播放的 GC 触发点 引擎层面
053 08-优化-帧级预算与GC生命周期策略 GC 预算模型、分步回收策略、对象池体系、场景加载 GC 控制 工程层面

09-核心技术-内存管理篇(6 篇)--- 资源生命周期与 GC 协同

解决什么问题:Unity 资源系统的内存管理与 GC 如何协同工作?

编号 文件名 核心内容 解决的关键问题
054 09-内存-Unity资源生命周期全景 资源从加载到卸载的完整链路、引用计数底层机制 资源是怎么在内存中活着的?
055 09-内存-AssetBundle与Addressables内存策略 AssetBundle 内存布局、Addressables 缓存策略、资源预加载 如何在 AB 系统中减少 GC 压力?
056 09-内存-GPU显存管理与GC边界 纹理/网格/RenderTexture 显存分配、GC 不管理的 GPU 资源 GPU 内存为什么 GC 管不了?
057 09-内存-Unity原生对象生命周期 UnityEngine.Object 生命周期、C# 代理对象、DON'T Destroy 模式 原生对象与托管对象的生死关联
058 09-内存-场景与关卡切换的内存风暴 场景切换的 GC 峰值、渐进式卸载、Additive 场景管理 如何避免场景切换时的 GC 卡顿?
059 09-内存-资源泄漏检测与治理 常见泄漏模式、快照对比、引用链分析、自动化泄漏检测 如何发现和修复资源泄漏?

10-核心技术-托管互操作篇(6 篇)--- C#/C++ 边界与零 GC

解决什么问题:如何在 C# 和 C++ 边界处管理内存?如何利用 Unity 的底层系统实现零 GC?

编号 文件名 核心内容 解决的关键问题
060 10-互操作-C#与C++边界的内存管理 P/Invoke、Marshal、内存封送、GC 与原生内存交互 托管-原生边界的内存归谁管?
061 10-互操作-Unsafe代码与手动内存管理 unsafe 指针、stackalloc、fixed 语句、手动分配与释放 如何在 C# 中手动管理内存?
062 10-互操作-JobSystem与GC隔离 Job 结构体限制、NativeContainer 类型、Job 中的 GC 安全 Job 为什么不能访问托管对象?
063 10-互操作-NativeContainer深度解析 NativeArray/NativeList/NativeHashMap 实现原理、分配器 NativeContainer 是如何绕过 GC 的?
064 10-互操作-Burst Compiler与GC消除 Burst 编译原理、托管调用消除、纯 IL2CPP 代码路径 Burst 如何做到零 GC?
065 10-互操作-DOTS-ECS的零GC架构 Archetype、Chunk、Component 内存布局、System 无 GC 执行 ECS 架构为什么能避免 GC?

11-演进篇-GC 发展史(5 篇)--- 三大 GC 发展线

解决什么问题:.NET、Mono、Unity 三条 GC 发展线是如何演进的?未来的趋势是什么?

编号 文件名 核心内容 关键问题
066 11-演进-.NET GC发展史 .NET Framework → .NET Core → .NET 5+ GC 演进、关键里程碑 .NET GC 这 20 年是怎么进化的?
067 11-演进-Mono GC发展史 早期 Boehm → SGen → Hybrid SUS 演进路线 Mono GC 为什么走了弯路?
068 11-演进-Unity GC发展史 Unity 5 之前 → IL2CPP Boehm → Incremental GC → 未来方向 Unity 的 GC 之路有何特殊性?
069 11-演进-国际横向对比 JVM GC(G1/ZGC/Shenandoah) vs .NET GC vs Mono GC 对比 Java 的 GC 领先在哪里?C# 能学什么?
070 11-演进-未来趋势与技术展望 无 GC 语言兴起、GC 硬件加速、Region-based 内存管理 GC 的未来是消亡还是进化?

12-实战篇-问题诊断(8 篇)--- 完整诊断方法论

解决什么问题:如何在真机环境中定位和分析 GC 问题?

编号 文件名 核心内容 工具/方法
071 12-诊断-Profiler精通指南 Unity Profiler GC 模块详解、Deep Profile、Profiler Marker Unity Profiler
072 12-诊断-帧级GC追踪技术 单帧 GC 分配追踪、分配栈、每帧 GC 预算管理 Profiler + 自定义工具
073 12-诊断-内存快照差分分析 Memory Profiler 快照、堆对象对比、泄漏对象定位 Memory Profiler
074 12-诊断-真机多平台GC差异分析 iOS Metal/Android Vulkan/Windows DX12 GC 行为对比 平台 Profiler
075 12-诊断-堆增长曲线与GC模式分析 堆大小时间序列、GC 频率/持续时间统计、模式识别 自定义分析工具
076 12-诊断-CI/CD中的GC自动化监测 自动化内存测试、GC 分配回归检测、CI 门禁 CI Pipeline
077 12-诊断-外部工具链集成 PerfView/.NET Memory Profiler/dotMemory/WinDbg 在 Unity 中的应用 外部工具链
078 12-诊断-从崩溃到GC的根因追溯 常见 GC 相关崩溃模式、Dump 分析、GC 日志解读 崩溃分析

13-实战篇-优化案例(10 篇)--- 按游戏类型分类

解决什么问题:不同类型的游戏(UI/战斗/开放世界等)各自的 GC 问题有何特征?如何解决?

编号 文件名 核心内容 案例类型
079 13-案例-UI系统的GC优化 列表滚动 GC、UI 更新频率控制、Text 复用池、图集管理 UI 密集型
080 13-案例-战斗系统的GC优化 技能创建与销毁、子弹池、伤害数字 GC、Buff/Debuff 管理 战斗密集型
081 13-案例-动画系统的GC优化 Animator GC 问题、AnimationClip 加载、IK 更新、状态机分配 动画密集型
082 13-案例-寻路与AI系统的GC优化 NavMesh 更新、A* 路径缓存、行为树节点池、感知系统 AI 密集型
083 13-案例-网络同步与序列化GC优化 消息序列化 GC、内存流复用、协议缓冲池、心跳 GC 网络密集型
084 13-案例-MMO-开放世界的GC管理 大地图区域加载、Entity 生命周期、场景流式加载、LOD GC 大型世界
085 13-案例-FPS-MOBA的实时GC策略 高帧率下的 GC 预算、武器系统零分配、技能预分配 实时竞技
086 13-案例-VR-AR的极致GC要求 VR 帧率要求下的 GC 策略、双眼渲染 GC、交互反馈零分配 VR/AR
087 13-案例-音频与物理系统的GC优化 AudioSource 管理、物理碰撞事件 GC、触发器回调优化 音频/物理
088 13-案例-项目级GC优化全流程 从立项到上线完整 GC 治理流程、性能门禁体系、迭代优化 全流程

14-进阶篇-定制化 GC 实战(5 篇)--- 从零构建自定义 GC

解决什么问题:如何从零构建一个可运行的 GC?通过实操理解 GC 的本质。

编号 文件名 核心内容 实践目标
089 14-进阶-最小Mark-Sweep框架 内存池管理、标记栈实现、清扫算法、完整可运行的 Mini GC 实现一个能工作的 GC
090 14-进阶-引入分代与紧缩 两代设计、新生代 Copying、老年代 Mark-Compact、晋升策略 为 Mini GC 加入分代
091 14-进阶-时间分片增量回收 增量标记实现、写屏障、安全点、调度器 实现增量式 GC
092 14-进阶-与工业级GC的对比反思 Mini GC vs SGen vs .NET Core GC 对比、学到了什么 反思与洞察
093 14-进阶-定制GC在Unity中的集成实验 在 Unity 中使用自定义分配器、替换默认 GC 的可行性分析 极限探索

15-面试篇(10 篇)--- 连锁追问树面试指南

定位 :针对 Unity 客户端/C# 后端开发面试中 GC 相关的所有考点。每道题包含:主答 → 追问 → 深度追问。

编号 文件名 覆盖领域 核心面试题(示例)
094 15-面试篇-基础概念与原理 GC 基础、算法、分代、LOH • GC 是什么?为什么需要 GC? • Mark-Sweep 和 Mark-Compact 的区别? • 分代 GC 为什么高效?代际假说是什么?
095 15-面试篇-C#内存管理深度 值类型/引用类型、堆/栈、装箱/闭包 • 值类型和引用类型在内存上有什么区别? • 装箱是如何发生的?如何避免? • 闭包导致 GC 分配的原理?如何修复?
096 15-面试篇-Unity GC专项 Unity GC 特点、增量式 GC、API 陷阱 • Unity 的 GC 和普通 .NET GC 有什么不同? • Unity 增量式 GC 的原理和限制? • 列举 Unity API 中常见的 GC 陷阱?
097 15-面试篇-IL2CPP GC专项 Boehm 限制、SGen、IL2CPP 内存管理 • IL2CPP 为什么使用 Boehm GC?有什么问题? • IL2CPP 在 iOS 上的内存管理有什么特殊之处?
098 15-面试篇-DOTS-ECS与GC JobSystem、Burst、NativeContainer • ECS 如何实现零 GC? • NativeContainer 为什么不受 GC 管理? • Burst Compiler 如何消除托管调用?
099 15-面试篇-源码分析与GC原理 GC 源码、算法实现细节 • GC Roots 有哪些种类?Mono 和 .NET Core 的 Roots 有什么不同? • 三色标记算法的详细过程?增量式 GC 如何解决漏标问题?
100 15-面试篇-实战优化经验 项目优化案例、问题定位 • 项目上线后遇到 GC 导致的卡顿,如何排查? • 如何制定团队 GC 优化规范?
101 15-面试篇-代码审查与GC CR 中的 GC 问题识别 • 代码 Review 时如何发现 GC 问题? • 以下这段代码有什么 GC 问题?(给出代码片段)
102 15-面试篇-场景设计与架构 大规模场景下的内存架构 • 设计一个大型开放世界的资源管理系统,如何控制 GC? • 场景切换时如何避免 GC 风暴?
103 15-面试篇-版本演进与未来 GC 发展史、趋势、对比 • 从 .NET Framework 到 .NET Core,GC 做了哪些重大改进? • GC 会被替代吗?Region-based 内存管理会成为未来吗?

16-附录(3 篇)

编号 文件名 核心内容
附录A 附录A-术语表.md GC 核心术语中英文对照(分配/标记/清扫/压缩/分代/增量/并发/安全点 等)
附录B 附录B-参考资源.md GC 经典论文/书籍/博客/源码仓库/视频课程
附录C 附录C-版本信息.md Mono/Unity/.NET SDK 版本与对应 GC 版本的兼容性

🎯 推荐阅读路径

根据你的背景和目标,选择最适合的阅读路径:

路径 A:快速扫盲(1-2 小时)

复制代码
01-认知篇 → 02-原理篇(核心算法) → 11-演进篇 → 15-面试篇(基础题)

适合:面试冲刺、GC 概念补强、想快速建立 GC 知识体系。

路径 B:优化实战(1-2 天)

复制代码
01-认知篇 → 02-原理篇 → 08-优化篇 → 09-内存篇 → 12-诊断篇 → 13-案例篇

适合:项目正面临 GC 性能问题,需要系统化解决方案。

路径 C:源码研究(1-2 周)

复制代码
02-原理篇 → 03-架构篇 → 04~07-源码深度(四大GC) → 14-进阶篇(定制GC)

适合:底层研究者、运行时贡献者、技术狂热者。

路径 D:零 GC 方案专项(1 天)

复制代码
01-认知篇(内存全景) → 10-互操作篇 → 08-优化篇(Span/DOTS相关)

适合:对 DOTS/ECS/Burst 零 GC 方案感兴趣。

路径 E:全面精通(2-3 个月)

复制代码
全部 105 篇文章,按编号顺序阅读

适合:希望成为 GC 领域专家的开发者。


📊 内容统计

维度 数据
文章总数 105 篇(持续更新中)
篇章数量 16 个
主题文件夹 16 个
覆盖 GC 运行时 Mono SGen、Boehm GC、Unity Incremental GC、.NET Core GC、Server GC
源码覆盖路径 sgen-gc.c、alloc.c、mark.c、IncrementalGC.cpp、gc.cpp、gc.h
对比方案 Mono GC vs .NET Core GC vs JVM GC 横向对比
实战案例覆盖 UI/战斗/动画/AI/网络/MMO/开放世界/FPS/MOBA/VR/音频/物理
面试题数量 10 篇 × 5~8 题 = 50+ 道连锁追问题
目标 Unity 版本 2018.4 ~ 6000.x
目标 .NET 版本 .NET Framework 4.x ~ .NET 8/9
覆盖平台 Windows/macOS/iOS/Android/WebGL

🔗 快速导航

篇章 文件数 快速链接
导览与计划 1 00-全篇导览与书写计划/
认知篇 6 01-认知篇/
原理篇 8 02-原理篇/
架构篇 7 03-架构篇/
源码-Mono GC 5 04-源码深度-Mono GC/
源码-Boehm GC 5 05-源码深度-Boehm GC与IL2CPP/
源码-Incremental GC 5 06-源码深度-Unity增量式GC/
源码-.NET Core GC 6 07-源码深度-.NET Core GC/
性能优化 10 08-核心技术-性能优化篇/
内存管理 6 09-核心技术-内存管理篇/
托管互操作 6 10-核心技术-托管互操作篇/
演进史 5 11-演进篇-GC发展史/
问题诊断 8 12-实战篇-问题诊断/
优化案例 10 13-实战篇-优化案例/
定制化 GC 5 14-进阶篇-定制化GC实战/
面试篇 10 15-面试篇/
附录 3 16-附录/

最后更新 :2026-07-14

维护状态 :持续更新中

定位:中文技术社区最全面的 Unity/C# GC 深度剖析系列

相关推荐
fogota3 小时前
C# `string.Join` 处理 `List<int>`
windows·c#
Behavior5 小时前
Unity 手游动态更换 App 图标 — Android 与 iOS 双端技术方案
c#·unity3d·游戏开发
周杰伦fans6 小时前
构建真正智能的CAD AI绘图代理
开发语言·人工智能·c#
UIU1149 小时前
递归算法与汉诺塔
c++·学习·算法·c#·递归
CSharp精选营15 小时前
我用 ASP.NET Core 做了个水稻病虫害检查系统
c#·毕业设计·.net core·码农刚子
唐青枫15 小时前
我用 C# 开发了一款电子发票自动整理工具
c#·.net
下页、再停留15 小时前
【C#桌面客户端系列学习-2】在原来窗口基础上打开新窗口
c#·visual studio
Behavior15 小时前
Unity 手游 iOS Deep Link 唤醒全流程:从 URL Scheme / Universal Links 到 C# 层参数投递
c#·unity3d·游戏开发
我是唐青枫15 小时前
我用 C# 开发了一款电子发票自动整理工具
c#·.net