EclipseがRAMを占有するのを制限する

EclipseがRAMを占有するのを制限する

私は科学的な作業のために Ubuntu 14.04 で Eclipse を使用していますが、私のコードは大量の RAM を消費します。Eclipse でコードを実行すると、システム モニターで RAM の使用量がほぼ 100% まで上昇し、同時に OS が非常に応答しなくなることがわかります (たとえば、ターミナルを開くのに 1 分以上かかります)。Eclipse が使用する RAM の量を制限することで、OS が常に応答し続けるようにする方法はありますか?

ありがとう!

答え1

Eclipse でアプリケーションを実行すると、OS 内に別のスレッドが作成されます。そのスレッドの RAM 使用量は Eclipse では制御できません。

システムのクラッシュを回避する 1 つの方法は、スワップ パーティションのサイズを増やすことです。この場合でも、システムは非常に遅くなりますが、クラッシュすることはありません。

アプリケーションの RAM 使用量を制御する方法は他にもあります。たとえば、使用量が特定の値を超えたらプログラムを強制終了するなどです。メモリ使用量にこのような厳しい制限を設定すると、予期しない動作やクラッシュが発生する可能性があります。RAM 使用量の制限については、以下のリンクを参照してください。

https://unix.stackexchange.com/questions/44985/limit-memory-usage-for-a-single-linux-process

https://stackoverflow.com/questions/26860822/how-limit-memory-usage-for-a-single-linux-process-and-not-kill-the-process

コードを最適化して RAM の使用量を減らすか、データを RAM に保持するのではなく、ハード ディスクにダンプして必要なときに読み取る方法を検討することをお勧めします。さらに良いのは、RAM を増やすことです。

答え2

ここまさにこの問題に対する Perl スクリプトです。

導入

タイムアウト スクリプトは、Linux でブラックボックス化されたプロセスの時間とメモリ消費を制限するためのリソース監視プログラムです。コマンド ラインで指定したコマンドを実行し、そのメモリと時間の消費を監視し、制限を超えた場合はプロセスを中断し、事前に設定されたメッセージでユーザーに通知します。

このスクリプトのキラー機能 (そして、実際に登場した理由) は、直接生成されたプロセスを監視するだけでなく、その後にフォークされた子プロセスも追跡することです。監視対象プロセスの範囲をプロセス グループまたはプロセス ツリーによって制限するかどうかを選択できます。

ソース

関連情報