GNOME Shell 内存泄露问题正在修复中 原因竟是忘记进行垃圾回收
GNOME Shell 被发现存在内存泄露的问题,现在官方开发团队已确认导致这个问题的原因 —— 忘记进行垃圾回收…… GNOME 称目前正在修复该问题。“触发垃圾回收能够将 GNOME Shell 使用的内存量减少到正常水平” GNOME 开发者花了大约一周的时间来定位问题的根源,不过内存泄漏的原因(看起来)已经确定。
GNOME 开发者 Georges Basile Stavracas 在仔细研究他在 GitLab 上关于 bug 的测试、检查和调查结果的过程中,似乎发现了导致这个 bug 的原因,“……有些问题伴随着垃圾回收器一起出现。”
Georges Basile Stavracas 表示,在他放弃寻找内存泄漏原因的所有希望之后,发现了一个非常有趣的行为,并且可以重现这个过程。他推断只有一系列相互依赖的对象的根对象被回收后,才能最终确定它的子对象/依赖对象会被标记为 GC 状态。
通过运行 GJS(GNOME 的 JavaScript 绑定) 的垃圾回收器,Stavracas 称能够减少大约 250MB 的内存使用量(GNOME Shell 在启动时的消耗)。
不过目前关于这个 bug 的补丁尚未发布,依旧处于修复中的状态。所以不能确定下个月发布的 18.04 LTS 是否包含这个 bug 的修复,如果没有,只能期待后续的更新。
而 Ubuntu 17.10 和 Ubuntu 18.04 LTS 在 Launchpad 上关于 GNOME Shell 的内存泄露问题已被标记为“关键”和“高”优先级级别,这表明 Ubuntu 对这个问题足够关心,将会及时提供修补建议。