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

virtual memory exhausted: Cannot allocate memory

本文关键字:分配 内存 虚拟内存      更新时间:2023-10-16

我的编译在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++文件。

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

这里是我得到json样本的地方。

* *影响* *

哇,我对c++的尊敬程度已经达到了顶峰。

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

当我最终进入生产时,我想我要建立一个完全不同的开发系统,以防止类似的事情破坏我的生产系统。

作为一个潜在的快速修复:您可以通过执行

来减少内存使用
make -j 1

告诉构建工具只使用一个CPU。

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

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

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

//编辑文件

  1. vi挂载

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

  1. /swapfile1无swap sw 0 0

//检查交换是否准备好

    自由- m

由于内存不足导致编译失败,可能没有足够的内存来编译程序。这不可能是因为"会话管理问题",正如在接受的答案中所建议的那样。mysql吃的比它应该吃的多吗?300MB是否足以编译c++ ?

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

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