首页 游戏 软件 资讯 排行榜 专题
首页
科技数码
垃圾分类真相:为何大多数回收都被浪费了

垃圾分类真相:为何大多数回收都被浪费了

热心网友
43
转载
2025-12-01

看到没?这已经不是“我写了个大对象结果GC卡了一下”这种程度的问题了,这是苹果这种量级的公司都压不住的系统性问题。你要知道,他们干的还是“密码管理”这种活——高频、敏感、延迟敏感、请求量巨大的线上服务。

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

苹果最近写了一篇很轻描淡写的技术迁移文:他们把密码管理服务从Java搬到了Swift,性能一飞冲天。

写得很克制,结果信息量爆炸。

看完只想说一句:原来不是我们写得不行,是垃圾回收(GC)这条路本身就有坑。

苹果点破了那个所有人都不想说的真相

文里有一段话反复看了三遍,给你摘出来:


我们先没急着换语言,先是把 JVM 能调的参数都调了。 用了 G1 GC,这个 GC 比老一代强很多:能控制暂停时间、有分区、还能并行干活。 ——但!在高并发场景下,GC 还是难搞:一来会有长暂停,二来性能开销会顶上来,三来要想让它适配各种各样的业务,就得一直细调、细调、再细调。

看到没?这已经不是“我写了个大对象结果GC卡了一下”这种程度的问题了,这是苹果这种量级的公司都压不住的系统性问题。

你要知道,他们干的还是“密码管理”这种活——高频、敏感、延迟敏感、请求量巨大的线上服务。

“讨厌GC”其实很多人想说但不敢说

大家对 GC 的情绪也不算中立的。

在移动端上这一点更明显: 你认真滚动一个 Flutter 界面,动画正丝滑,GC 突然说:该洗一洗内存了——咔!掉帧。

你用户根本不在乎你在做什么回收算法,只知道:“怎么卡了一下?”

以前总觉得: “行,客户端容易卡是因为 UI 线程比较娇贵;但在服务器上,总有 20ms 的网络延迟,GC 卡个十几毫秒,应该没人能看出来吧?”

——苹果这篇文直接告诉你:想多了。

它不是“偶然卡一下”的问题,是你量一旦上来了,GC 这套机制本身就变成了阻力。 一个密码管理服务,全球几百万、几千万设备,分分钟都是对象分配和释放,GC 的成本就不再是“小数点后第二位”的事了。

先回忆一下:GC 最原始的样子有多粗暴

一开始的垃圾回收很朴素:停世界,涂颜色。

程序停一停,谁也别动从“根”(栈、全局、寄存器)开始,把能走到的对象都标成“活的”其他的都当垃圾,一把丢掉

这种叫标记-清除,思想简单,工程实现也比较直观。 问题也很直观:你得停。

游戏里就是卡顿,前端里就是掉帧,后端里就是尾延迟蹿上去。

于是这一停世界,就让几十年的语言设计师、JVM 工程师、runtime 大神们开始拼命“降卡顿”。

然后我们走上了一条“工程师自我感动”的路

于是就有了各种“听起来很高级”的GC:

分代回收并行、并发回收分区 / region-based(Java 的 G1 就是这个)可预测暂停时间增量式、分片式、后台标记……

听上去是不是很厉害?

但苹果那句话其实已经说透了:它们都没解决根问题,只是把大坑切成了很多小坑。

GC 还是得暂停的,只是从“一次停很久”变成了“停很多次、每次短一点”。 而且更要命的是:你分区、你分代,其实都是在给 runtime 自己加开销。在高负载场景下,这个开销很快就会浮出来。

所以苹果最后说:我们还是换语言吧。

你以为苹果会秒选 Swift?他们也犹豫过

他们自己写的:我们其实看了好多语言,不是那种“苹果出品必用 Swift”那种拍脑袋。

最后还是落到了 Swift,核心原因其实就一个:它不用垃圾回收。

Swift 用的是ARC(Automatic Reference Counting,自动引用计数)。

它不搞“我过一阵子再来看看谁还能活着”这一套, 它搞的是:“你被引用+1,你不被引用-1;你变成0,我立刻干掉你。”

这个思路有两个惊人的优点:

释放是分散的,不是集中的所以不会突然来一刀,整个线程都进去回收时机更可预期引用一旦没了,马上释放,不会拖到几秒钟后再清

这,就是为什么在 UI 场景下,ARC 体验肉眼可见地更顺。

苹果现在的说法是:同样的爽感,在服务器上也能拿到。

当然,ARC 也不是天使

你要是只说“GC 有暂停,ARC 没暂停”,那就太不讲究了。

ARC 最大的雷,大家都知道:循环引用。

A 引用 B,B 引用 A,两个都有人爱,引用计数永远不会变成 0, 但其实外面没人能走到它们了——这就是一坨泄露。

Swift 的做法是: 给你弱引用(weak)、unowned这种不参与计数的引用, 你自己在该用的地方用,不该用的地方别用。

也就是说:ARC 不是傻瓜式的。你还是得懂点内存生命周期,不然你也能写出一锅烂。

不过话说回来,GC 也不是傻瓜式的。

你要是一直往一个全局 List 里塞对象、从来不删,GC 也清不了你。 本质上还是:语言帮你减了 80% 的内存活,剩下 20% 还是你自己得有脑子。

所以问题就变成了:

来源:https://www.51cto.com/article/828674.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

美国SEC主席Paul Atkins证实:加密货币安全港提案已送交白宫审查
web3.0
美国SEC主席Paul Atkins证实:加密货币安全港提案已送交白宫审查

加密货币行业翘首以盼的监管里程碑,终于有了实质性进展。美国证券交易委员会(SEC)主席保罗·阿特金斯(Paul Atkins)近日证实,那份允许加密项目在早期获得注册豁免权的“安全港”框架提案,已经正式送抵白宫,进入了最终审查阶段。 在范德堡大学与区块链协会联合举办的数字资产峰会上,阿特金斯透露了这

热心网友
04.08
微策略Strategy报告:第一季录得144.6亿美元浮亏 再斥资约3.3亿美元买进4871枚比特币
web3.0
微策略Strategy报告:第一季录得144.6亿美元浮亏 再斥资约3.3亿美元买进4871枚比特币

微策略Strategy报告:第一季录得144 6亿美元浮亏 再斥资约3 3亿美元买进4871枚比特币 市场震荡的威力有多大?看看Strategy的最新季报就明白了。根据其最新向美国证管会(SEC)提交的8-K报告,受市场剧烈波动影响,这家公司所持的比特币在第一季度录得了一笔惊人的数字——144 6亿

热心网友
04.08
稳定币发行商Tether再扩Web3版图!Paolo Ardoino:正开发去中心化搜索引擎Hypersearch
web3.0
稳定币发行商Tether再扩Web3版图!Paolo Ardoino:正开发去中心化搜索引擎Hypersearch

稳定币巨头Tether的动向,向来是加密世界的风向标。这不,它向Web3基础设施的版图扩张,又迈出了关键一步。公司执行长Paolo Ardoino在社交平台X上透露,其工程团队正在全力“烹制”一个新项目——去中心化搜索引擎 “Hypersearch”。这个消息一出,立刻引发了行业的广泛猜想。 采用D

热心网友
04.08
Base链首个原生DeFi借贷协议Seamless Protocol倒闭 将于2026年6月30日下线
web3.0
Base链首个原生DeFi借贷协议Seamless Protocol倒闭 将于2026年6月30日下线

基地位于Coinbase旗下以太坊Layer2网络Base的Seamless Protocol,日前正式宣告了服务的终结。这个曾经吸引了超过20万用户的原生DeFi借贷协议,在运营不到三年后,终究没能跑赢时间。它主打的核心产品是Integrated Leverage Markets(ILMs)——一

热心网友
04.08
PAAL代币如何参与治理?社区投票能决定哪些事项?
web3.0
PAAL代币如何参与治理?社区投票能决定哪些事项?

PAAL代币揭秘:深度解析Web3社区治理的核心钥匙 在去中心化自治组织的浪潮中,谁真正掌握了项目的话语权?PAAL代币提供了一套系统化的答案。它不仅是生态内流转的价值媒介,更是开启链上治理大门的核心凭证。通过持有并质押PAAL代币,用户能够对协议升级、资金分配乃至战略方向等关键事务投出决定性的一票

热心网友
04.08