virtual memory exhausted: Cannot allocate memory

2019-06-16 11:25发布

My compilation fails on ubuntu 12.10 with 300mb memory available (750mb total, 350mb to MySQL), 1.5ghz, I am trying to rework wt's basic hello world file into a simple ajax page. I'm pretty sure it's not a memory issue at heart since I was able to compile the original hello.C file with g++ -O3 -o hello hello.C -lwtfcgi -lwt -lboost_signals.

I'm sure I'm screwing up the c++ since I ripped out the guts of HelloApplication::HelloApplication(const WEnvironment& env) : WApplication(env) and put in the example from the Wt::Json example

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
}

I'm new to c++, so I have almost no idea what I'm doing. All I can do is execute the simplest of c++ files.

Here's the original source to the hello world file.

Here's where I got the json sample from.

** Repercussions**

Wow, my respect level just went through the roof for the power of c++.

This has totally destroyed my VPS. I can't restart. I can't even reinstall my distro.

When I finally go into production, I think I'm going to set up a totally different dev system to prevent something like this killing my production system.

2条回答
三岁会撩人
2楼-- · 2019-06-16 11:55

As a potential quick fix: You can reduce the memory usage by doing

make -j 1

which tells the build tool to use only one CPU. Worked for me.

查看更多
forever°为你锁心
3楼-- · 2019-06-16 11:57

Since your compilation fails with out of memory, there's probably not enough memory to compile your program. This can't possibly be because of 'a session management problem' as suggested in the accepted answer. Is mysql eating more than it should? Is 300MB enough to compile C++ anyway?

Serving JSon (like for a REST interface) in Wt is done through a WResource bound to the WServer object. WApplication is for an interactive user interface.

查看更多
登录 后发表回答