由于高内存使用而防止系统挂起

时间:2018-02-20 10:26:15

标签: linux memory process architecture operating-system

在我的计算机上安装了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都不起作用。

1 个答案:

答案 0 :(得分:1)

我相信你正在寻找的进程限制(由bash中的ulimit命令控制)。您可以使用ulimit -v设置进​​程可以分配的最大虚拟内存量,参数为KB大小。例如,运行:

ulimit -v 100000
在运行程序之前

应该在它耗尽系统内存(see Ubuntu page for more information)之前将其终止。请注意,限制是继承的,即你的ulimit命令设置了shell的限制,然后由所有继承它继承。