小编Exp*_* HP的帖子

`make -j`(没有参数)危险吗?

今天早些时候,建设东西的时候,我决定运行make

$ make -j
Run Code Online (Sandbox Code Playgroud)

也许是出于与其他软件的习惯,如cabal其中-j默认为一个合理的限度。

大约 20 秒后,我的整个桌面都停止了。我寻找各种活动迹象。没有粉丝旋转。HDD 指示灯呈稳定的绿色,但我没有听到磁盘活动。嗯嗯。沉默了 10 分钟后,我终于看到了我很久以前第一次按键的反应,并且我也开始听到非常熟悉的磁盘抖动声音。20 分钟后,我慢慢地尝试涉水进入这台没有响应的机器上的终端,我屈服并使用了 REISUB。


起初,我认为一个不相关的桌面应用程序一定是罪魁祸首,因为我早就对交互式 bash 会话设置内存限制,以防止我将自己置于这种情况!但/var/log/syslog讲述了一个不同的故事;在OOM杀手留下一些ps垃圾场被怀疑的包装c++cc1plus流程!

以下是其中一个转储的频率分析:

Command          Number of appearances
'sh'                    322
'c++'                   321
'cc1plus'               321
'chrome'                 27
'make'                   27
'bash'                    3
all else combined       120
Run Code Online (Sandbox Code Playgroud)

所以我检查了 GNU make 的手册页:(强调)

-j [jobs], --jobs[=jobs] 指定要同时运行的作业(命令)的数量。如果有多个 -j 选项,则最后一个有效。 如果 -j 选项不带参数给出,make 将不会限制可以同时运行的作业数量。


我不愿意看到我是否能重现该问题(医生,我这样做时,它会伤害这个 …

make out-of-memory

14
推荐指数
2
解决办法
5348
查看次数

标签 统计

make ×1

out-of-memory ×1