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

8 c++ json compiler-errors wt virtual-memory

我的编译在ubuntu 12.10上失败,300mb内存可用(总共750mb,对于MySQL为350mb),1.5ghz,我试图将wt的基本hello world文件重新编写成一个简单的ajax页面.我很确定这不是内存问题,因为我能够编译原始的hello.C文件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
}
Run Code Online (Sandbox Code Playgroud)

我是c ++的新手,所以我几乎不知道我在做什么.我所能做的就是执行最简单的c ++文件.

这是hello world文件的原始源代码.

这是我从中获取json样本的地方.

**反响**

哇,我的尊重程度刚刚超越了c ++的力量.

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

当我最终投入生产时,我想我将建立一个完全不同的开发系统,以防止像这样的东西杀死我的生产系统.

Rai*_*üge 6

作为潜在的快速修复:您可以通过执行以下操作来减少内存使用量

make -j 1
Run Code Online (Sandbox Code Playgroud)

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


小智 6

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

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

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

// 编辑fstab文件

  1. vi /etc/fstab

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

  1. /swapfile1 无 交换 sw 0 0

// 检查交换是否准备好

  1. 自由-m


use*_*875 2

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

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