代码之家  ›  专栏  ›  技术社区  ›  user1382306

虚拟内存已耗尽:无法分配内存

  •  18
  • user1382306  · 技术社区  · 11 年前

    我在ubuntu 12.10上编译失败,可用内存为300mb(总内存为750mb,MySQL为350mb),1.5ghz,我正试图将wt的基本hello-world文件重新制作成一个简单的ajax页面。我确信这根本不是内存问题,因为我能够用 g++ -O3 -o hello hello.C -lwtfcgi -lwt -lboost_signals .

    我确信我把c++搞砸了,因为我把 HelloApplication::HelloApplication(const WEnvironment& env) : WApplication(env) 并放入Wt::Json示例中的示例

    HelloApplication::HelloApplication(const WEnvironment& env)
      : WApplication(env)
    {
        Json::Object result;
        Json::parse("{ "
                 "  \"a\": \"That's great\", "
                 "  \"b\": true "
                 "}",
                 result);
    
        std::cerr << "Size: " << result.size(); << std::endl; // Size: 2
        WString s = result.get("a");
        bool b = result.get("b");
        std::cerr << "a: " << s << ", b: " << b << std::endl; // a: That's great, b: true
    }
    

    我刚接触c++,所以我几乎不知道自己在做什么。我所能做的就是执行最简单的c++文件。

    这是原件 source to the hello world file .

    这是我得到的 the json sample from .

    **反响**

    哇,我对c++的力量的尊重程度简直高到了极点。

    这完全摧毁了我的VPS。我无法重新启动。我甚至无法重新安装发行版。

    当我最终投入生产时,我想我会建立一个完全不同的开发系统,以防止类似的事情扼杀我的生产系统。

    4 回复  |  直到 11 年前
        1
  •  13
  •   Rainer Glüge    5 年前

    作为一个潜在的快速解决方案:您可以通过以下操作来减少内存使用

    make -j 1
    

    这告诉构建工具只使用一个CPU。为我工作。

        2
  •  4
  •   OKNOIR    3 年前

    只需添加一个交换文件即可解决此问题!

    //创建一个1 GB的交换文件

    1. dd if=/dev/zero of=/swapfile1 bs=1024计数=1048576
    2. chown根:根/交换文件1
    3. chmod 0600/交换文件1
    4. mkswap/交换文件1
    5. 斯威士兰/斯威士兰1

    //编辑fstab文件

    1. vi等/fstab

    //在文件末尾附加以下行

    1. /交换文件1无交换软件0 0

    //检查交换是否准备就绪

    1. 自由-m
        3
  •  2
  •   user52875    11 年前

    由于您的编译因内存不足而失败,因此可能没有足够的内存来编译程序。这不可能是因为接受的答案中建议的“会话管理问题”。mysql吃得比它应该吃的多吗?300MB是否足以编译C++?

    在Wt中服务JSon(类似于REST接口)是通过绑定到WServer对象的WResource完成的。WApplication用于交互式用户界面。

        4
  •  1
  •   Praveen Praveen    2 年前

    试着让-j也为我的实时应用程序工作