编译 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 - 虚拟内存耗尽:无法分配内存的主要内容,如果未能解决你的问题,请参考以下文章