‹ 指南

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 仍然越用越佔記憶體

請告訴我們當時你在做甚麼——哪個畫面、哪個字型、開啟了多久。這次修復就是從這樣的回饋而來的。