技术栈
gc
Huanzhi_Lin
12 小时前
游戏开发
·
gc
·
laya
·
layaair
·
资源回收
·
laya3.4
资源回收源码阅读参考-上
补充:Resource._removeReference(约 295 行)减计数。减到 0 以后,只有下面四个条件同时成立才会立刻 destroy:
淡海水
2 天前
unity
·
c#
·
.netcore
·
linq
·
gc
08-02-优化-LINQ与函数式编程的GC代价
篇章:08-性能优化篇 | 阅读时间:约 45 分钟 | 前置知识:了解 C# LINQ 基本语法LINQ(Language Integrated Query)为 C# 带来了优雅的函数式查询语法,极大提升了代码的表达力。然而,每一条 LINQ 查询背后都隐藏着 GC 分配:迭代器对象、闭包实例、临时容器。在 Unity 游戏的 Update 路径中,不加节制的 LINQ 使用是 GC 卡顿的常见元凶。
黑猫学长呀
2 天前
gc
·
存储
·
ftl
·
ufs
·
nand
·
存储芯片
·
nandflash
存储芯片千问千答第11问:对于磨损类用例,waf越大的模型磨损的更快,还是waf更小的模型磨损的更快?
文章为个人辛苦整理,付费内容,已加入原创侵权保护,禁止私自转载。 文章所在专栏:《黑猫存储千问千答》文 / 黑猫学长
淡海水
3 天前
unity
·
架构
·
c#
·
.netcore
·
gc
·
1024程序员节
07-06-源码-.NET Core GC的极致优化技术
篇章:07-源码深度-.NET Core GC | 阅读时间:约 40 分钟.NET Core GC 的极致性能不仅来自高级算法,还来自大量底层的微优化技术。每项微优化单独看可能只提升 1-5%,但累积起来产生了巨大的性能优势。这句话点出了本文的主角:不是分代、压缩这些"论文级"的设计,而是把虚拟内存接口、CPU 缓存、NUMA 拓扑、线程调度逐一榨干的工程手段。
淡海水
3 天前
算法
·
unity
·
c#
·
.netcore
·
gc
·
1024程序员节
07-02-源码-.NET Core GC分配路径
篇章:07-源码深度-.NET Core GC 阅读时间:约 40 分钟分配路径是 GC 中最常执行的代码路径——每次 new 一个托管对象都会经过它。在一个每秒处理数万请求的 Web API 服务中,分配路径每秒可能被调用数百万次甚至上亿次。如果每次分配都陷入内核、获取锁或执行复杂计算,性能会瞬间崩塌。因此,.NET Core GC 的分配路径经过精心优化,在理想情况下只需几条 CPU 指令(bump pointer 加法 + 边界检查)即可完成。
淡海水
4 天前
unity
·
架构
·
c#
·
.netcore
·
gc
·
1024程序员节
07-04-源码-.NET Core GC清扫与压缩
篇章:07-源码深度-.NET Core GC | 阅读时间:约 45 分钟标记阶段识别了存活对象后,GC 进入回收阶段——清扫死亡对象、压缩存活对象。清扫和压缩是 GC 中内存效率的决定性因素:清扫决定了多少死亡内存被真正释放,压缩决定了碎片是否累积到影响分配的程度。
淡海水
5 天前
unity
·
c#
·
.netcore
·
gc
07-03-源码-.NET Core GC标记与扫描
篇章:07-源码深度-.NET Core GC 阅读时间:约 45 分钟标记阶段是 GC 的核心——它从 GC Roots 出发遍历整个对象图,标记所有存活对象。.NET Core GC 的标记系统融合了并行标记、后台标记、卡片标记三种技术,是工业级 GC 标记算法的代表作。
淡海水
5 天前
unity
·
架构
·
c#
·
.netcore
·
gc
07-01-源码-.NET Core GC总览与架构
篇章:07-源码深度-.NET Core GC 阅读时间:约 45 分钟.NET Core GC(在 .NET 5+ 中简称为 .NET GC)是当今工业界最先进的垃圾回收器之一。与 Mono 的 SGen 和 Unity 的增量式 GC 不同,.NET Core GC 经历了近 20 年的持续演进,从 .NET Framework 1.0 时代的简单 Workstation GC 发展到了如今支持 Server GC、Background GC、并发标记、LOH 压缩、硬件加速等高级特性的工业级 GC。
淡海水
7 天前
unity
·
c#
·
gc
06-03-源码-时间分片与调度策略
篇章:06-源码深度-Unity增量式GC | 阅读时间:约 45 分钟 | 前置知识:增量标记原理增量式 GC 的宣传口径通常是"把一次长暂停摊到多帧"。这句话说起来只有一行,工程上却对应一整套调度系统:每帧给 GC 多少时间、一轮标记怎么被切成若干小步、切不完时怎么办、应用把堆改得太快时怎么兜底。本章就在源码层面把这套系统拆开。
淡海水
7 天前
算法
·
unity
·
c#
·
gc
06-02-源码-增量标记算法实现
篇章:06-源码深度-Unity增量式GC | 阅读时间:约 50 分钟 | 前置知识:增量标记原理、对象图遍历
淡海水
7 天前
unity
·
c#
·
gc
06-01-源码-Incremental GC总览与设计
篇章:06-源码深度-Unity增量式GC | 阅读时间:约 50 分钟 | 前置知识:GC 基本概念、三色标记算法
淡海水
9 天前
算法
·
unity
·
c#
·
游戏引擎
·
gc
05-02-源码-Boehm GC标记阶段
元数据Boehm GC的标记阶段是其最核心的组件。与SGen的精确标记不同,Boehm GC使用保守标记算法:不依赖对象的精确类型信息,而是将对象体中所有看起来像指针的word都当作潜在引用。这种设计使得Boehm GC可以与任意C/C++代码集成,但也带来了伪指针风险和扫描开销。本文深入分析保守标记算法的实现、根发现机制、Partial Clean优化以及标记栈管理。
步步为营DotNet
10 天前
c#
·
.net
·
内存管理
·
gc
·
datas
从分代预算到 DATAS:.NET GC 调优到底在调什么
关于 .NET GC 的资料里,“Server GC 吞吐高、Workstation GC 延迟低”"把 GC.Collect 去掉就好了"这类结论流传得比机制本身更广。结果是在容器里把 ServerGarbageCollection 打开、堆内存翻了三倍,或者照着旧文调 GCLatencyMode 却发现毫无变化。这篇想讲清楚一件事:GC 的所有可调参数,最终都收敛到两个量上——gen0 预算和堆的回收目标。理解这两个量怎么被算出来,DATAS 的取舍也就自然清楚了。
淡海水
10 天前
开发语言
·
算法
·
unity
·
c#
·
游戏引擎
·
gc
05-03-源码-Boehm GC分配与碎片管理
元数据Boehm GC的分配系统采用分级空闲链表(Size-Class Free Lists)策略,将对象按大小分组,每组维护独立的空闲链表。由于Boehm GC不支持压缩和对象移动,碎片管理是其核心挑战。本文深入分析Size-Class分配机制、空闲链表管理、碎片合并策略以及Lazy Free优化。
狂奔的sherry
14 天前
java
·
linux
·
ruby
·
gc
·
jruby
JRuby 多线程反引号偶发 127:GC 提前释放了 posix_spawn 的 argv
一条集成测试用 JRuby 并发执行外部命令:开 5 个线程,每个线程用反引号跑同一个转换工具,最后断言 5 个返回码都正常。绝大多数时候它都能通过,但 CI 上偶尔会红一次,结果是:
淡海水
14 天前
unity
·
架构
·
c#
·
gc
·
sgen
03-03-架构篇-SGen GC架构解析
篇章:03-架构篇 | 阅读时间:约 45 分钟 | 前置知识:了解分代 GC 概念SGen 的全称是 Simple Generational GC,它是 Mono 运行时自带的垃圾回收器,从 Mono 2.8 起进入发行版并成为默认选择(可用 --gc=sgen 显式指定,动态库名为 libmonosgen)。在 SGen 之前,Mono 长期依赖 Boehm-Demers-Weiser GC,那是一款保守式(conservative)回收器:它把内存里所有"看起来像指针"的字都当成候选引用去扫描。
淡海水
16 天前
unity
·
架构
·
c#
·
gc
·
boehm
03-02-架构篇-Boehm GC架构解析
篇章:03-架构篇 | 阅读时间:约 45 分钟 | 前置知识:了解保守式 GC 概念Boehm GC 的正式名称是 Boehm-Demers-Weiser Garbage Collector,出自 Hans Boehm、David Demers 与 Alan Weiser 三人,1980 年代末为 C/C++ 而生。编译器不会告诉运行时"栈上哪个槽位存的是指针",对象头也没有引用位图,Boehm 用一条保守假设绕过全部前提,收益和代价都写进它的架构。
淡海水
17 天前
开发语言
·
unity
·
c#
·
gc
·
暂停时间
02-07-原理篇-GC暂停时间的本质
篇章:02-原理篇 阅读时间:约 35 分钟 前置知识:了解 GC 触发条件GC暂停(Stop-The-World, STW)是所有使用GC的运行时都绕不开的话题。在游戏开发中,一次50ms的GC暂停意味着丢失3帧画面;在交易系统中,一次100ms的暂停可能导致订单超时。理解GC暂停的本质——它从何而来、由什么组成、如何测量、如何减少——是性能优化的核心知识。
淡海水
18 天前
算法
·
unity
·
c#
·
并发
·
gc
·
增量
02-06-原理篇-增量式GC与并发GC
篇章:02-原理篇 阅读时间:约 40 分钟 前置知识:了解 STW 暂停在游戏和实时交互应用中,GC暂停(Stop-The-World, STW)是最令人头疼的性能问题之一。一次Full GC可能暂停几十甚至上百毫秒,导致明显的卡顿。为了减少暂停时间,GC设计者们发展出了三种核心策略:增量式GC(Incremental GC)、并发式GC(Concurrent GC)和并行式GC(Parallel GC)。
淡海水
18 天前
算法
·
unity
·
c#
·
图
·
gc
·
遍历
·
roots
02-04-原理篇-GC Roots与对象图遍历
篇章:02-原理篇 阅读时间:约 35 分钟 前置知识:了解堆和栈的基本概念垃圾回收的核心问题是:如何判断一个对象还在被使用? 追踪式 GC(Tracing GC)给出的答案是——从一组被称为 GC Roots 的根引用出发,遍历整个对象引用图(Object Graph),所有可达的对象都是存活的,不可达的对象都是垃圾。