【问题标题】:Compiling Phalcon - Virtual memory exhausted: Cannot allocate memory编译 Phalcon - 虚拟内存耗尽:无法分配内存
【发布时间】: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

【问题讨论】:

    标签: memory gcc phalcon


    【解决方案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/…
    • 出于这个原因,在 StackOverflow 上不鼓励仅链接的答案。文章中的要点应作为答案发布。
    • 通过 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 的新版本,最终结果是相同的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-23
      • 1970-01-01
      • 2012-12-09
      • 1970-01-01
      • 2017-12-16
      • 2011-04-12
      • 2011-03-08
      • 2014-10-01
      相关资源
      最近更新 更多