编译 Phalcon - 虚拟内存耗尽:无法分配内存

Posted

技术标签:

【中文标题】编译 Phalcon - 虚拟内存耗尽:无法分配内存【英文标题】:Compiling Phalcon - Virtual memory exhausted: Cannot allocate memory 【发布时间】:2014-05-14 05:41:11 【问题描述】:

当我尝试编译 Phalcon 时,我得到一个错误:

virtual memory exhausted: Cannot allocate memory

我正在运行以下命令

git clone --depth=1 git://github.com/phalcon/cphalcon.git 
cd cphalcon/build 
sudo ./install

我有一个 1GB 内存的 VPS

【问题讨论】:

【参考方案1】:

添加更多交换文件可能会有所帮助。尝试为vim编译YouCompleteMe时遇到了这个问题,通过添加swapfile解决了。

https://www.digitalocean.com/community/articles/how-to-add-swap-on-ubuntu-14-04

【讨论】:

我在尝试在 Amazon t1.micro 实例的 virtualenv 中安装 Python Pandas 时遇到了这个问题。添加临时交换解决了这个问题:)【参考方案2】:

似乎 GCC 分配了很多内存,检查一下

https://web.archive.org/web/20141202015428/http://hostingfu.com/article/compiling-with-gcc-on-low-memory-vps

停止尽可能多的服务(Apache、mysql 等)将释放更多内存,并且 Phalcon 将编译。在最坏的情况下,您需要增加虚拟盒子的内存。

感谢@AndrewD 提供有效的链接。

【讨论】:

我是否正确假设您使用 GCC 编译的任何大型代码库都有可能达到此限制并且它不是 phalcon 的错误? @CodeMonkey 没错。我发布这个是因为 Phalcon 使用的资源比其他框架低得多,而且人们倾向于使用低端资源。这使问题更加明显:) 看起来hostingfu已经不复存在了,所以你现在可以在这里找到这个:web.archive.org/web/20141202015428/http://hostingfu.com/article/… 出于这个原因,在 *** 上不鼓励仅链接的答案。文章中的要点应作为答案发布。 通过 ssh 在 aws 微型实例上尝试了 CFLAGS="$CFLAGS --param ggc-min-expand=0 --param ggc-min-heapsize=8192"。运行 make make: *** [phalcon.lo] Error 1 时没有工作并遇到 virtual memory exhausted: Cannot allocate memory。尝试了另一个答案中提到的交换文件方法,它在第一次尝试时就起作用了。【参考方案3】:

Andres 建议的另一个选项是从不同的文件夹构建:

https://forum.phalconphp.com/discussion/7891/upgrading-from-201-to-205-getting-virtual-memory-exhausted-canno

步骤是……

git clone --depth=1 git://github.com/phalcon/cphalcon.git
cd cphalcon/ext
sudo ./install

正如他解释的那样,这种方法使用的内存更少,但需要更多时间,而且对于 GCC >4.7 的新版本,最终结果是相同的。

【讨论】:

以上是关于编译 Phalcon - 虚拟内存耗尽:无法分配内存的主要内容,如果未能解决你的问题,请参考以下文章

maxwell提示内存耗尽怎么解决?

在 32 位 Linux 中无法耗尽物理内存

为啥反复分配和释放内存会耗尽系统所有内存?

Phalcon框架的编译安装 内存不足的解决办法

“内零头”和“外零头”

Tensorflow 耗尽 GPU 内存:分配器 (GPU_0_bfc) 尝试分配内存不足