在我安装了 Ubuntu 的计算机上,我可以通过运行一个占用大量内存的简单程序来卡住整个 GUI。在那之后,我什至无法使用 GUI 来停止或暂停有问题的程序。
如何配置我的操作系统才能避免出现此问题?
Android、Windows 10、Mac 或 iOS 是否存在类似问题?
这是C++程序。
#define L 256*1024*1024
int main()
{
while(1)
{
char *c=new char[L];
for(long i=0;i<L;i++)
c[i]='a';
}
return 0;
}
编辑:此程序在 Windows 8.1 中也会导致问题。甚至 Alt-Ctrl-Del 也不起作用。
最佳答案
我相信进程限制(由 bash 中的 ulimit
命令控制)是您正在寻找的。您可以使用 ulimit -v
设置您的进程可以分配的最大虚拟内存量,参数是以 KB 为单位的大小。例如,运行:
ulimit -v 100000
在运行您的程序之前,应该在它耗尽系统内存之前将其终止(see Ubuntu page for more information)。请注意,限制是继承的,即您的 ulimit 命令正在为您的 shell 设置限制,然后由它启动的所有子进程继承。
关于linux - 防止由于高内存使用而导致系统挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48883037/