是否有可能留出 50MB 的内存,以便在紧急情况下,当某个东西使用了我所有的内存或加载了 CPU 时,我可以打开一个终端,找到有问题的进程,然后杀死它?
答案1
据我所知这是不可能的。我认为,如果我们考虑到内存管理的复杂性,那么解决这个问题比乍看起来要复杂得多。甚至可能很难清楚地写出“预留 50MB”的含义。
但在 Linux 中,有一些东西可能会更优雅地解决您的问题:
OOM 杀手 - 内存不足杀手 - 它会决定在内存紧张时杀死哪个进程,然后杀死它。
比等待第一个不检查返回值malloc()
和 chrashes 的程序要好得多。
有一些参数可以根据您的需要进行配置 - 请参阅 如何配置 Linux 内存不足杀手。
使它变得复杂的部分原因是它无助于为一个程序保留内存:要做任何有用的事情,您需要能够启动其他程序 - 例如kill
.