如果一个进程需要大量内存,系统会将所有其他进程移动到交换文件中。似乎包括必要的进程,如 X11 服务器或终端。
因此,如果一个进程继续无限制地分配,一切都会变得无响应,直到该进程被 OOM 杀手杀死。我的笔记本电脑似乎特别灵敏,反应非常糟糕。我只是花了整整一个小时等待进程终止,在此期间甚至无法移动鼠标光标。
如何避免这种情况?
1)禁用交换=>我经常启动很多然后变得不活动的进程。不活动的应该移到交换区。
2) 买个 SSD => 太贵了
3) 设置最大内存 ulimit => 但如果程序需要合理的大量内存,它就会失败。问题不是它使用太多,而是它抑制了其他进程
4) 将重要的程序(X11、bash、kill、top 等)保存在内存中并且永远不要交换那些 => 可以这样做吗?如何?也许只交换大程序?
5) ?