‹ 指南

Term 占用的内存大幅减少 v26.5.1+

以前双指缩放文字、反复打开终端,Term 的内存只涨不落。从 26.5.1 起,它保持平稳。

需要 Term v26.5.1 或更高版本。

撰写于

你可能遇到过

有用户告诉我们,Term 用得越久越“重”——尤其是双指缩放调整过字号之后,或者反复打开、关闭终端之后。确实如此:这些操作每次都会留下一点内存,Term 一直没有归还,积少成多。

在手机上这很关键。应用在后台时,系统会优先关闭占用内存多的应用。Term 占得越多,你切到别的应用时它就越容易被关掉——被关掉之后回来,会话需要重新连接。

问题出在哪

Term 用你选的字体来绘制终端。以前每次字号改变、每次打开终端,Term 都会把这个字体再加载一份到内存里,而旧的那几份从不释放。一次双指缩放会让字号连续变化很多次,所以缩放几下,内存里就堆起了几十份字体。

现在每个字体只加载一次,所有字号共用。换成别的字体时,旧字体占的内存会被释放。

修复前后

以下数字都来自同一台华为手机、同一个终端字体(Ubuntu Mono),分别在修复前后测得。

双指缩放文字

打开一个终端时,字体占用的内存:

修复前26.5.1 起
刚打开终端184 MB40 MB
缩放 1 次后461 MB40 MB
缩放 3 次后1,099 MB40 MB

修复前,这 1.1 GB 在手机闲置一分钟后仍然没有释放。现在无论怎样放大缩小都没有变化:任何字号下,字体都只占这 40 MB。

打开和关闭终端

每一轮“打开一个终端、再关闭它的标签页”之后,回到主机列表时 Term 的总内存:

修复前26.5.1 起
主机列表,刚启动101 MB99 MB
1 轮后228 MB167 MB
3 轮后333 MB161 MB
6 轮后497 MB170 MB
15 轮后—166 MB

修复前,第一轮之后每一轮都会再多占大约 55 MB,而且一点都不回落。现在只有第一次打开终端时占用一次内存,之后不管开关多少次,数字都保持平稳。

你需要做什么

只需要更新。修复包含在 Term 26.5.1 中,对所有字体都生效——内置的 Iosevka Term、你下载的字体,以及系统字体。无需任何设置。

你的数字会有所不同

这是在一台手机、一个字体上测得的结果。Ubuntu Mono 是列表里较小的字体之一;字体越大,每一份占的内存也越大,所以省下的内存只会更多。在任何设备上都应当成立的是这个趋势:修复前,内存随每次缩放、每个终端不断上涨;现在不会了。

如果 Term 仍然越用越占内存

请告诉我们当时你在做什么——哪个界面、哪个字体、打开了多久。这次修复就是从这样的反馈里来的。