我必须用我的源代码编译一个计算机生成的源代码,它太大了,我无法控制它。由于我的内存不多,我不得不强制使用较少的内存。否则,它会被操作系统杀死(精确)。我该怎么办?
答案1
为您的机器添加更多交换空间作为解决方案怎么样?这将增加更多虚拟内存,并可能允许您构建代码而不会让 OOM killer 杀死编译器。如果您不想费力地扩大交换分区,您可以添加一个临时交换文件。例如,添加一个基于文件的 4GB 交换空间:
dd if=/dev/zero of=swap.img bs=1M count=4096
mkswap swap.img
chmod 0600 swap.img
sudo chown root:root swap.img
swapon swap.img
答案2
您尝试过使用nice
吗?它允许为您的进程设置自定义优先级。nice
范围从 -20 到 19,其中 19 为最低优先级,-20 为最高优先级。您可以尝试以下方法:
nice -n 19 command_you_want_to_execute
例子:
nice -n 19 firefox
编辑:稍微阐述一下我的回答,如果你的操作系统终止了你的进程,那是因为它占用了系统正常运行所需的资源。如果你降低进程的优先级,这些资源将自动分配给更重要的系统任务。