JVM を作成し、JVM によって生成されたプロセスのメモリ使用量を制御する必要があるアプリケーションをコーディングしています。
1629 次
3 に答える
2
Runtime.exec(...)
などを使用して生成されたJava以外の「プロセス」について話していると思います。
答えは、これはOS固有であり、標準のJavaライブラリがサポートするものではないということです。しかし、Linux(またはUNIX)でこれを行う場合、次の3つのアプローチを考えることができます。
ulimit
ビルトインを使用してメモリ制限を減らすシェルラッパースクリプトを介してJavaにコマンドを生成させてからexec
、実際のコマンドを実行します。を参照してくださいman 1 ulimit
。- シェルラッパーと同じことを行う小さなCコマンドを記述します。これにより、ラッパースクリプトアプローチよりもオーバーヘッドが少なくなります。
- JNIとネイティブコードライブラリでも同じことを試してください。
Process
との動作を複製する必要がありProcessBuilder
、それは非常に難しい可能性があるため、お勧めしません。
于 2009-10-12T11:24:01.170 に答える
2
JMX を使用して JVM プロセスに接続し、メモリの状態や割り当てに関する情報を取得したり、ガベージ コレクションを起動したりできます。ただし、最初に JVM の JMX 監視を有効にする必要があります: http://java.sun.com/j2se/1.5.0/docs/guide/management/agent.html。
于 2009-10-12T10:17:43.803 に答える
0
「制御」によって「既知の上限に制限する」ことを意味する場合は、単に渡すことができます
-Xms`lower_bound`
と
-Xmx`upper_bound`
プロセスを生成するときに vm の引数に。ここで適切な設定を参照してください
于 2009-10-12T10:15:20.470 に答える