hamidi Asked: 2016-06-12 08:38:59 +0800 CST2016-06-12 08:38:59 +0800 CST 2016-06-12 08:38:59 +0800 CST 如何强制 gcc & ld (完全)使用更少的内存? 772 我必须用我的源代码编译一个计算机生成的源代码,它太大了,我无法控制它。由于我的内存不多,我不得不强制使用更少的内存。否则,它会被操作系统杀死(精确)。我能做些什么? 12.04 2 个回答 Voted Best Answer Colin Ian King 2016-06-12T10:31:56+08:002016-06-12T10:31:56+08:00 为您的机器添加更多交换作为解决方案怎么样?这将添加更多的虚拟内存,并可能允许您在没有 OOM 杀手杀死编译器的情况下构建代码。如果您不想让交换分区变大,您可以添加一个临时交换文件。例如,添加基于文件的 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 Guillermo J. 2016-06-12T09:47:08+08:002016-06-12T09:47:08+08:00 你试过使用nice吗?它允许为您的流程设置自定义优先级。nice范围从 -20 到 19,其中 19 为最低优先级,-20 为最高优先级。你可以尝试这样的事情: nice -n 19 command_you_want_to_execute 例子: nice -n 19 firefox 编辑:详细说明我的回复,如果您的操作系统杀死了您的进程,那是因为正在使用系统正常运行所需的资源。如果你给你的进程一个较低的优先级,这些资源将自动分配给更重要的系统任务。
为您的机器添加更多交换作为解决方案怎么样?这将添加更多的虚拟内存,并可能允许您在没有 OOM 杀手杀死编译器的情况下构建代码。如果您不想让交换分区变大,您可以添加一个临时交换文件。例如,添加基于文件的 4GB 交换:
你试过使用
nice
吗?它允许为您的流程设置自定义优先级。nice
范围从 -20 到 19,其中 19 为最低优先级,-20 为最高优先级。你可以尝试这样的事情:例子:
编辑:详细说明我的回复,如果您的操作系统杀死了您的进程,那是因为正在使用系统正常运行所需的资源。如果你给你的进程一个较低的优先级,这些资源将自动分配给更重要的系统任务。