我正在编译一些大量使用模板的代码(它基于 boost::msm 框架)。当使用 g++ 4.7.1 编译时,cc1plus 进程达到大约 2.4 Gb 的 RAM 大小并且失败并出现“虚拟内存耗尽:无法分配内存”错误。
我使用的是 32 位编译器(切换到 64 位不是一个选项 ATM),机器本身是一个 64 位 Ubuntu,具有 16Gb 的 RAM,编译是在 Debian wheezy 发行版的 64 位 chroot 下执行的。在编译时有大量可用的 RAM,因此如果由于缺少可用的物理 RAM 而导致编译失败,则首先要达到 4Gb。我尝试使用“ulimit -m”选项,设置为不同的值并将其设置为较小的大小会导致编译器更早地失败,但是当留给“无限”时,它会在上面提到的 2+ Gb 处失败。
所以我想其他东西一定在限制我。也许有人遇到过类似的问题并且知道改变限制的方法?