以前双指缩放文字、反复打开终端,Term 的内存只涨不落。从 26.5.1 起,它保持平稳。
需要 Term v26.5.1 或更高版本。
撰写于
有用户告诉我们,Term 用得越久越“重”——尤其是双指缩放调整过字号之后,或者反复打开、关闭终端之后。确实如此:这些操作每次都会留下一点内存,Term 一直没有归还,积少成多。
在手机上这很关键。应用在后台时,系统会优先关闭占用内存多的应用。Term 占得越多,你切到别的应用时它就越容易被关掉——被关掉之后回来,会话需要重新连接。
Term 用你选的字体来绘制终端。以前每次字号改变、每次打开终端,Term 都会把这个字体再加载一份到内存里,而旧的那几份从不释放。一次双指缩放会让字号连续变化很多次,所以缩放几下,内存里就堆起了几十份字体。
现在每个字体只加载一次,所有字号共用。换成别的字体时,旧字体占的内存会被释放。
以下数字都来自同一台华为手机、同一个终端字体(Ubuntu Mono),分别在修复前后测得。
打开一个终端时,字体占用的内存:
| 修复前 | 26.5.1 起 | |
|---|---|---|
| 刚打开终端 | 184 MB | 40 MB |
| 缩放 1 次后 | 461 MB | 40 MB |
| 缩放 3 次后 | 1,099 MB | 40 MB |
修复前,这 1.1 GB 在手机闲置一分钟后仍然没有释放。现在无论怎样放大缩小都没有变化:任何字号下,字体都只占这 40 MB。
每一轮“打开一个终端、再关闭它的标签页”之后,回到主机列表时 Term 的总内存:
| 修复前 | 26.5.1 起 | |
|---|---|---|
| 主机列表,刚启动 | 101 MB | 99 MB |
| 1 轮后 | 228 MB | 167 MB |
| 3 轮后 | 333 MB | 161 MB |
| 6 轮后 | 497 MB | 170 MB |
| 15 轮后 | — | 166 MB |
修复前,第一轮之后每一轮都会再多占大约 55 MB,而且一点都不回落。现在只有第一次打开终端时占用一次内存,之后不管开关多少次,数字都保持平稳。
只需要更新。修复包含在 Term 26.5.1 中,对所有字体都生效——内置的 Iosevka Term、你下载的字体,以及系统字体。无需任何设置。
这是在一台手机、一个字体上测得的结果。Ubuntu Mono 是列表里较小的字体之一;字体越大,每一份占的内存也越大,所以省下的内存只会更多。在任何设备上都应当成立的是这个趋势:修复前,内存随每次缩放、每个终端不断上涨;现在不会了。
请告诉我们当时你在做什么——哪个界面、哪个字体、打开了多久。这次修复就是从这样的反馈里来的。