iDvel / rime-ice

Rime 配置:雾凇拼音 | 长期维护的简体词库
https://dvel.me/posts/rime-ice/
GNU General Public License v3.0
9.25k stars 617 forks source link

Linux Fcitx5 内存泄露问题 #877

Closed Redv123 closed 4 months ago

Redv123 commented 4 months ago

Linux 版本的 Fcitx5 只要打字就会占用更多的内存,打的句子越长上升的内存越高。我自己开机测试了一会已经从 65.8 MB 上升到 200 MB 的内存占用。 我使用 Ubuntu 和 Flatpak 的版本都可以复现问题。 image

mirtlebot commented 4 months ago

我测试了一下,结论是内存泄露是 fcitx5-rime (on Debian KDE,librime 1.85)本身的问题

fcitx5-rime 本身存在内存上升和短期内不会回收的问题,大词库尤其明显。(雾凇为超大词库)

步骤:使用明月拼音方案,无任何 lua,无任何副翻译器,除词库外无任何更改,部署后,重启 fcitx5:

模糊音(speller/algebra)会让内存上涨严重加剧:

步骤:使用明月拼音,无 lua,无副翻译器,挂载雾凇词库除了添加了雾凇的模糊音

1716431413.webm

其他平台:同样配置,同样流程:

1716432847.webm

因而内存泄露是 fcitx5-rime 的问题

其他说明:

mirtlebot commented 4 months ago

Workaround:

  1. 换用 ibus-rime
  2. 禁用模糊音,即注释掉 speller/algebra 中你觉得没有用的大部分条目
  3. 禁用某些词库
  4. 向 fcitx5-rime 报告,请求其解决内存问题

此 issue 保持打开,用于给其他用户提醒,以及等待此问题由 fcitx5-rime 确认。

wengxt commented 4 months ago

首先我要強調一下,兩個人的視頻對比完全是雞同鴨講

plasma-systemmonitor 如截圖所示,是一整個 cgroup 的進程用量,包括private 和 shared 的兩個部分,甚至它都不一定是單一 fcitx 進程(在chat中已经确认它把同样启用的 mozc server 也算在其中)

gnome-systemmonitor 是和 ksysguard 類似的情況,你看的那一列,只顯示了私有內存的部分,而 rime 作爲很多採用 mmap 加載數據的情況,絕大部分都在於共享內存,总而言之就是比了个寂寞

图片

ksysguard 的第一列和 gnome-systemmonitor 可以互相參照,而後面共享內存完全沒有

wengxt commented 4 months ago

用汇报者提供的配置和数据,在同一个系统,用相同的系统监视器观察 图片

基本上而言是大差不差的,只是统计方式的问题

mirtlebot commented 4 months ago

不用 linux,没完全看懂🤣,不过 issue 关了,就当你觉得解决了。

CoelacanthusHex commented 4 months ago

不用 linux,没完全看懂🤣,不过 issue 关了,就当你觉得解决了。

可以了解一下内存的 RSS(Resident Set Size)、USS(Unique Set Size) 和 PSS(Proportional Set Size),大小不同基本上是因为计算的东西不一样。