拖慢电脑的罪魁祸首「可怕的 Fcitx 输入法漏洞」

Fcitx

Fcitx 是 Linux 上很有名的输入法框架,支持中文并且有多个中文输入模块。传说中的“小企鹅输入法”指的就是它。
PS:搜狗 for linux 就是基于 Fcitx 框架开发的。只是搜狗有一个独立的设置面板,给人一种搜狗是独立输入法的错觉,其实并不是。

Fcitx 的内存泄漏

我在之前其实一直使用的是搜狗,几乎没有使用过其他的例如 Fcitx 内置的拼音或者 Sunpinyin 模块。因为搜狗词库多,云联想更是强大无比、三大平台皮肤通用、没有流氓行为(弹窗、推送、自动升级等)。简直比 Windows 下的更好用。

直到某天系统升级导致搜狗已经无法正常使用了,大概是不兼容了,于是我开始使用 Fcitx 内置的拼音模块。
但是从此以后 Fcitx 内存占用就出奇的高,直到某天 Fcitx 一个进程的内存占用已经超过 5 G,已经拖慢我的电脑,不管不行了。我才决定花点时间解决一下这个问题。

我发现,导致这个原因的元凶是「云拼音」模块。因为云拼音使用的是海外服务的 API,请求根本达不到。导致不断的打字就有不断的失败云联想 API 请求产生,如果关掉云拼音或者让 Fcitx 走代理(云拼音正常工作)便没有这个问题了。别说,我还真的让 Fcitx 走了一段时间的代理。直到某天我发现,原来云拼音是有国内服务源的:

截图

按照上面的设置,将默认的云服务源 ‘Google’ 换成 ‘Baidu’ 。不需要走代理,云拼音功能立马正常,第二个候选词不再会是「…」(云联想请求中)。百度的输入源导致云联想速度非常快,一下子提升了输入法好几个次元的语句和词库联想能力。并且,内存占用不会超过 40 M 。

最后

传说 Fcitx 代码写得很烂,被批评过。我没有看过它的代码,我对输入法也不感兴趣!但是如此明显的资源泄漏 BUG 我真的是无力吐槽了,仅仅因为云拼音 API 本机无法访问,便可以渐渐的占用到好几个 G 的内存资源,确实服。

但是,不管怎样,我还是对 Fcitx 有信心的。如果你了解一下这个开源软件的历史,会发现它还是很不容易的。在这里,我希望 Fcitx 越来越好,所有中国 Linuxer 都应该支持你。