技术解析
前两次关于 Linux 的问题都得很了很满意的回复,感常感谢!
这次再来请教一个关于 Linux 内存回收的问题,因为这些问题使用搜索引擎也不好找到对应的答案,所以还有烦请有知道的 Linux 前辈们不吝赐教。
先说已知条件:
Porteus 这个 Linux 发行版,我发现:启动进入 LXDE 桌面,使用 free -m 得到 200M 的内存占用,打开 Firefox 浏览器,浏览几个小时,free -m 得到 960M,再打开其它软件,free -m 得到 1.2G 。好,现在关了 firefox 和打开的软件,再 free -m 得到 201M,内存回收很彻底。
再试 Lubuntu,启动进入系统 free -m 得到 210M,按理说一个团队打造的,内存收回也应该很好,但现实不然,就算是关了 Firefox 和其它打开的软件,再 # echo 3 > /proc/sys/vm/drop_caches 清空缓存,free -m 得到的值也不可能是 210M,可能是 400M 或更大。
包括我自己维护的 CDLinux 也是这样,思前想后就是想不明白,Porteus 是如何做到的?
在无忧论坛咨询过 wintoflash 前辈,他的回信是可能 Firefox 或 LXDE/XFCE 存在内存泄漏,但我测试了无数次,就算用 Porteus 上同一个软件,一样做不到像 Porteus 完全回收,用上了 echo 3 > /proc/sys/vm/drop_caches 也不行。
很多前辈可能会说:让 Linux 自动管理内存、让系统充分利用内存不好吗?
我的回答是:在大容量内存及高性能机器上完全可以,但对于我想实现的移动操作系统( LiveCD )来说这种想法是致命的,移动操作系统会面对各种各样高低性能,大小内存的机器,能在十分有限的内存的机器上稳定的运行,对于内存回收决对是个大关键。
现实之中大量测试发现:Porteus 在 2G RAM 的机器上运行长时间不会溃,但 CDLinux 会因为内存耗尽而系统崩溃。
我一心想打造一个简单,稳定,实用的 Linux 发行版,不为名利,只为奉献,无奈自己能力太有限,所以烦请知道的前辈们能否指点一下?感谢不尽!