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

时间:2013-03-04 02:20:55

标签: c++ json compiler-errors virtual-memory wt

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

我确定我搞砸了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。我无法重启。我甚至无法重新安装我的发行版。

当我最终投入生产时,我想我将建立一个完全不同的开发系统,以防止这样的事情导致我的生产系统崩溃。

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

作为潜在的快速解决方案:您可以通过

减少内存使用量
make -j 1

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

答案 2 :(得分:0)

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

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

  1. dd if=/dev/zero of=/swapfile1 bs=1024 count=1048576
  2. chown root:root /swapfile1
  3. chmod 0600 /swapfile1
  4. mkswap /swapfile1
  5. 交换 /swapfile1

// 编辑 fstab 文件

  1. vi /etc/fstab

//在文件末尾追加如下一行

  1. /swapfile1 none swap sw 0 0

// 检查交换是否准备好

  1. 免费 -m