[App Sharing] 给 Deepin 装上 macOS 同款"内存耗尽"对话框
Tofloor
poster avatar
st0nie
deepin
2026-08-04 13:40
Author

Linux 桌面用户应该都遇到过:内存吃满之后系统不会立刻死,而是先卡上几分钟,鼠标键盘全部失灵,最后只能长按电源。内核不是不
管,是它管得太晚——OOM Killer 要等到内存分配彻底失败才动手,动手之前你已经卡死了。而且它杀谁全看打分,你写到一半的文档可
能正好就是分数最高的那个。

macOS 在这件事上处理得好一些:内存耗尽时系统会把最占内存的几个应用先暂停住,弹个框让你自己决定恢复还是退出。
deepin-liferaft 就是把这套交互搬到了 Deepin 上。

原理不复杂。它每秒读一次内核的 PSI 压力指标(判断阈值直接抄的 Fedora 作业),发现持续高压就用 cgroup.freeze 把最可疑的三
个应用冻住。冻结的应用不再产生任何内存分配,压力马上就降下来,但进程本身完好无损。然后弹出"强制退出应用程序"对话框,要救
要杀随你。就算这时候直接关窗、注销,它退出前也会把冻住的应用全部解开。

名字是救生筏的意思(应用内显示名"内存救生圈")。内存不足这条船该沉还是会沉,它管不了,但能保证沉之前先把人捞上来。

常驻开销大概 13 MiB PSS,闲着的时候基本不干活。源码在 https://github.com/st0nie/deepin-liferaft/ ,欢迎试用。

deepin-liferaft-0.1.0.tar.gz

memory_eater.zip

安装完之后,可能需要手动启用服务,并开启内核的psi功能:

image.png

之后更新grub配置并重启电脑:

sudo update-grub && sudo reboot

image.png

确认PSI指标存在,即可开始试用了,用systemctl开启服务:

systemctl --user enable deepin-liferaft.service --now

开启后,可以用 python memory_eater.py 来测试,如果工作正常的话,会有这样的弹窗:

image.png

已经暂停的程序会以红字显示,选中后点击恢复即可让程序继续工作,直接关掉对话框也能恢复暂停的程序。你可以手动选择需要杀掉的程序,强制退出后,关闭对话框,系统就立刻恢复正常了


2026/8/6 更新,添加调试日志与i18n(目前支持cjk)

Reply Favorite View the author
All Replies
2 / 2
To page
avatar
zijinyise
deepin
2026-08-05 11:43
#21

给大佬打call

kissing_heart

Reply View the author
avatar
怪力熊玩Fedora
deepin
2026-08-05 18:46
#22

希望制作一个Fedora版本

Reply View the author
avatar
怪力熊玩Fedora
deepin
2026-08-05 19:17
#23
怪力熊玩Fedora

希望制作一个Fedora版本

Github我已经提issue了

Reply View the author
avatar
怪力熊玩Fedora
deepin
2026-08-05 19:42
#24

预告:Evernight Vista 45将会加入macOS 同款"内存耗尽"对话框

Reply View the author
avatar
怪力熊玩Fedora
deepin
2026-08-05 19:51
#25
gfdgd_xi

大佬好强,想问下我想内置您的程序到 GXDE 里,可以吗

你也在这

Reply View the author
avatar
武鸣
deepin
2026-08-05 22:32
#26

感谢楼主大佬,已安装和测试成功。

Reply View the author
avatar
st0nie
deepin
2026-08-06 11:15
#27
怪力熊玩Fedora

Github我已经提issue了

虽然很高兴你能提pr,但是这个项目是为deepin/uos制作的,如果有需要就自己fork吧,换成Qt并且把debian/* 都清理掉太有破坏性了

Reply View the author
avatar
怪力熊玩Fedora
deepin
2026-08-06 11:18
#28
st0nie

虽然很高兴你能提pr,但是这个项目是为deepin/uos制作的,如果有需要就自己fork吧,换成Qt并且把debian/* 都清理掉太有破坏性了

没事sad

Reply View the author
avatar
st0nie
deepin
2026-08-06 11:31
#29
怪力熊玩Fedora

没事sad

不过也给我了个启发,也许可以做一个通用的liferaft-daemon加上不同的前端?

Reply View the author
avatar
怪力熊玩Fedora
deepin
2026-08-06 11:37
#30
st0nie

不过也给我了个启发,也许可以做一个通用的liferaft-daemon加上不同的前端?

可以,但最好先适配Fedora和KDE Plasma

Reply View the author
avatar
怪力熊玩Fedora
deepin
2026-08-06 11:38
#31
st0nie

不过也给我了个启发,也许可以做一个通用的liferaft-daemon加上不同的前端?

还有最好加上多语言支持

Reply View the author
avatar
carro
deepin
a day ago
#32
deepin流云

好东西kissing_heart @一头牛 @babyfengfjx 感觉系统是不是可以考虑从功能层面引入这样的内存管控机制?

之前有遇到内存耗尽卡死的问题,也尝试安装过nohang,直接卡死体验太差了。楼主的方案很赞!

除了将“内存耗尽”弹窗纳入系统,建议在系统设置加一个配置项可以设置swap交换空间大小。(实现起来并不复杂,swap交换空间可以绑定swapfile文件)。

图片.png

Reply View the author
avatar
st0nie
deepin
a day ago
#33
怪力熊玩Fedora

还有最好加上多语言支持

已经加上i18n了

Reply View the author
2 / 2
To page