有时,启动计算机后,某些应用程序无法启动:它们崩溃了。它们通常是最大的,例如 firefox、thunderbird 或 virtualbox。重新启动或清理缓存通常可以解决问题。例如:
me@localhost:~$ thunderbird &
Segmentation fault
me@localhost:~$ echo 3 > /proc/sys/vm/drop_caches
me@localhost:~$ thunderbird &
[1] 6709
我还注意到,这些应用程序二进制文件或相关库在删除缓存之前和之后具有不同的 md5sum。我什至比较了二进制文件的十六进制转储,发现它们之间有一个字节的差异。
不同的 Linux 发行版和版本都会发生这种情况。我已经运行了很多次 memtest,用另一个硬盘(但型号相同)更换了我的硬盘,但没有任何变化。这个硬件已经有几年历史了,而且很常见,但自从我得到它以来,这种情况一直在发生,所以我不认为它不受支持。
我该怎么做才能找到这个问题的原因?提前致谢。
答案1
这对我来说听起来像是记忆错误。我建议你运行一个内存测试仪,比如http://www.memtest.org/一两天看看是否会出现任何错误。
答案2
这看起来确实像 OOM 杀死:
你可以做什么:
定期检查内存使用情况,直到程序开始崩溃。您很可能会看到内存使用量即将达到极限。
增加交换空间。增加交换可能会使某些应用程序响应时间变慢,但可以防止应用程序被终止或使计算机冻结。
如果增加交换空间可以解决此问题,那么增加物理 RAM 作为永久解决方案,不会产生任何不良副作用。