2009-08-25 13 views
4

同じプロセスのマルチスレッド対マルチプロセスを実行する小さなJavaアプリケーションのメモリ占有量の違いを数値化しようとしています。Linux上で複数のプロセスでJVMメモリフットプリントを決定する方法

私のテストはすべてLinuxで行われています。

マルチスレッドで実行している場合、全体のフットプリントとスレッドごとの追加オーバーヘッドを判断するのは比較的簡単です。シングルスレッドプロセスを実行する場合、JVMはpmapに従って大きなフットプリント(200〜300Mの仮想空間)を持ちます。同じアプリの複数のコピーを実行すると、メモリフットプリントx Nが表示され、プロセス間で共有されるjavaコードはありません。

Javaコードは実行可能ではないバイトコードであるため、Cバイナリと同じようにプロセス間でコードを共有しないことが通知されています。しかし、私はその後、同じことを達成するためにCopy-On-Write技術を使用する可能性があることを知らされました。 pmapを使用すると、プロセスのフットプリントがわかり、他のプロセスとどれだけ共有できるかはわかりません。

問題は、どのくらいのデータがプロセス間でコピーオンライトを介して共有されるかを判断することです。

答えて

-3

正しく設定された非組み込みLinuxシステムでは、なぜメモリフットプリントが気になりますか?

回答があれば、どのような違いがありますか?

データは、プロセスが他のプロセスの適切な祖先であった場合にのみ、プロセス間で共有されます。
さらに、Javaプログラムのメモリレイアウトとページ内のデータによって決定されます。これらのすべてがリリースごとに変更される可能性があります。

関連する問題