以前雙指縮放文字、反覆開啟終端機,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 是列表中較小的字型之一;字型越大,每一份佔用的記憶體也越大,所以省下的記憶體只會更多。在任何裝置上都應該成立的是這個趨勢:修復前,記憶體隨每次縮放、每個終端機不斷上升;現在不會了。
請告訴我們當時你在做甚麼——哪個畫面、哪個字型、開啟了多久。這次修復就是從這樣的回饋而來的。