C++プログラム/ Linuxは、実行後2〜3秒以内にエラーstd::bad alloc
が32GB RAMに吐き出されます(ラッパー呼び出し元によって再起動されます)。私が本当に気にしているのはこの問題を解決することですが、私は一歩一歩進み、問題の理解に自信を持っていきたいと思います。std :: bad_allocエラーが発生しました。 OSが実際にメモリ不足になっているかどうかを確認する方法
システムがnew
要求にメモリを割り当てることができないように見えます(これは、OSのメモリが不足している場合に発生します)。プログラムが実行されている間、私はsar
コマンドをできるだけ短い間隔(1秒)で実行しますが、kbcached
は〜24GBのメモリです。 OSがキャッシュを解放し、そのメモリをnew
リクエストで利用できるようにしないのはなぜですか? 1秒は(プログラムの実行速度に比べて)時間がかかりすぎるか、ここで何か間違っています。
基本的には、OSのメモリが不足しているため、メモリを割り当てることができず、この時点から何かを実行することができます。どうやってするの?
理想的には、メモリの割り当ては、どのくらいのキャッシング、合計最大使用メモリのように、失敗したとき、私は右の時点でのシステム統計を持ちたいなど、あなたが実際にあなたのプロセスのメモリが割り当てられているか確認したい場合は
ちょっとメモします。あなたはどのようにRAMを持っているかとは無関係です。プロセスの仮想メモリアドレス空間に空きメモリがどれくらいあるかによって異なります。私はプロセス仮想メモリの割り当てを確認するコマンドを知りません。 – Naveen
これはOS固有のものだと思います。 – sharptooth
あなたのプロセスはどのくらいのメモリを割り当てましたか?あなたのプロセスにはどんな制約がありますか?それは32ビットですか? –