2016-07-24 1 views
7

私は、JavaVM(Sun、Linux)の実際のフットプリントが、JVMの複数のプロセスを起動するときの開始点であることを知りたかっただけです。私がよく覚えているときには、それらはrt.jarを共有する必要があります。それらのJVMはJITキャッシュを共有しますか(すべてのJVMは同じクラスパスを使用します)。JVMのメモリフットプリントは何ですか?どのように最小化できますか?

マルチインスタンスJVMのオーバーヘッドを減らすためにできることはありますか? (ヒープの制限を小さくすることの横に)?

アプリケーションのプログラミング中にできることは何ですか?

メモリ領域を共有できますか?多分マップされたメモリブロックを共有しますか?

+1

あなたが複数のJVMを起動する必要がありますなぜ?なぜそれをしたいのかという理由がありますが、あなたの理由は何ですか? –

+0

複数のJVMを使用しているのであれば、それは正当な理由であり、各JVMのメモリオーバーヘッドは、実行しているマシンに比べてかなり小さいはずです。 –

+0

シンプルな、開発中に私は単一のプロセスで何かを持っています。配備中に、単純さよりむしろ安定性を助けるために、さまざまなプロセスにさまざまな部品を配置できるのだろうかと思います。あなたに例を挙げましょう。 Linuxで最近のChromeバージョン+ Seleniumを起動した場合、プロセスが滞ってロックアップする確率は約25:1です。彼自身のプロセスにそれを置くことによって、それは時間がかかりすぎると彼はクロムプロセスを殺す、答えです。別のシナリオでは、C++コードを実行して、独自のプロセスでそれを分離しても、JVMに障害が発生してもクラッシュすることはありません。 –

答えて

3

おそらく部分的な回答に過ぎません。

JVM

のメモリフットプリントとは何のJavaアプリのフルフットプリントは、(私はそれを呼び出すこの方法を聞かせて)ヒープ領域と非ヒープ領域から構成されています。非ヒープスペースに存在するものの例としては、PermGenまたはMetaspace、コードからの割り当てが正しくないもの(malloc)、NIOではネイティブmemeoryも使用しています。

どのように最小化できますか?

通常、ヒープはフットプリントの最大部分を占めます。だから、私はそれから始めるだろう。

非ヒープ領域については、PermGen(最大サイズが冗長である場合)、スレッドスタック(特に64ビットJMMではかなり大きい)、およびコードキャッシュコース)。

これらのJVMは、すべてのプロセスが独自のフットプリントを持っている(と私は他の人に気づいていないよ)通常の状態ではJITキャッシュ

を共有しています。それは実際にスレッドとプロセスが異なるものです。また、複数のJVMに戻ると、各JVMは別のプロセスです。

だけのクラスのソースとして、同じディレクトリ(同じインストール)からJavaを起動した場合、当然のことながら、彼らは同じrt.jarのを共有しているrt.jarに

を共有する必要があります。たとえば、Stringクラスは実行中のJVMの数だけロードされます。

5

This postは、Javaアプリケーションのフットプリントを構成するものを記述します。つまり、フットプリントを減らすには、Javaヒープ、メタスペース、コードキャッシュ、ダイレクトバッファ、スレッド数などを減らす必要があります。

HotSpot JVMのインスタンスは、データを共有するために互いに通信しません。基本的には、OSによって共有されるもの、つまりダイナミックライブラリ(.so)と読み取り専用メモリマップファイル(.jars)以外は何も共有しません。

IPCメカニズムを使用してさらに共有することは、アプリケーションに依存します。メモリマップされたファイル。他の回答を補完するために

+0

私はそれを見てクラスデータの共有と呼ばれます:http://docs.oracle.com/javase/7/docs/technotes/guides/vm/class-data-sharing.html クラスを処理し、それを共有してより高速なロードアップを行います。結局私が元々望んでいたものではありません。しかし、ファイルアクセスのOSキャッシュとは異なります。 –

+1

@MartinKersten右。 CDSは、プリロードされたクラスをJVMのporcessのアドレス空間にマップするメカニズムです。 CDSイメージは、JVM間でメモリマップファイルとして共有されます。フットプリントを減らすのではなく、起動時間を短縮することがより重要だと私は言います。 – apangin

関連する問題