私はC++プログラム/Linuxを持っています。これは実行から2〜3秒以内std::bad alloc
に、32GBのRAMでエラーを吐き出し始めます(そしてラッパーの呼び出し元によって再起動されます)。私が本当に気にかけているのは、この問題を解決することですが、一歩一歩進んで、問題の理解に自信をつけていきたいと思います。
new
システムがリクエストにメモリを割り当てることができないようです(これは、OSのメモリが不足している場合に発生します)。プログラムの実行中に、別の端末でsar
可能な限り最小の間隔(1秒)でコマンドを実行しますが、それkbcached
は最大24GBのメモリであることがわかります。OSがキャッシュを解放してそのメモリをnew
リクエストで利用できるようにできないのはなぜですか?1秒は(プログラムの実行速度と比較して)時間がかかりすぎるか、ここで何か間違ったことをしています。
基本的には、OSが実際にメモリを使い果たしており、メモリを割り当てることができないことを相互検証して特定し、この時点から問題を解決したいと思います。どうやってするの?
理想的には、キャッシュの量、メモリの合計使用量など、メモリ割り当てが失敗した時点でシステム統計を取得したいと思います。