出现了好几次服务器内存耗完导致进程宕机的问题,虽然主要问题是服务器管理不当,但是还是需要一个办法,在内存耗完了的时候,能自动保存全部数据以后再退出,而不是直接宕机。
解决办法暂时这样,在进程启动的时候预先申请一小块内存,当机器的内存耗光时,把这一小块内存释放出来,给进程保存数据,保存完毕后进程退出。
具体如下:
BYTE* reserveMem=NULL;
void noMemory() //定义自己的new操作失败处理函数
{
delete reserveMem;
save();
exit(1);
}
void save()
{
//保存数据
}
int main()
{
std::set_new_handler(noMemory);
reserveMem = new BYTE[2*1024*1024];
return 1;
}