4

マルチスレッドとマルチプロセスの同じプロセスを実行する小さな Java アプリのメモリ フットプリントの違いを定量化しようとしています。

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

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

Javaコードは実行可能ではなくバイトコードであるため、Cバイナリとは異なり、プロセス間でコードを共有しないとのことです。ただし、その後、Copy-On-Write テクノロジを使用して同じことを実現する可能性があると知らされました。pmap を使用すると、プロセスのフットプリントが表示されるだけで、別のプロセスと共有できる容量は表示されません。

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

4

1 に答える 1

-3

正しく構成された非組み込み Linux システムでは、なぜメモリ フットプリントを気にするのでしょうか?

答えがあるとしたら、どんな違いがありますか?

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

于 2009-08-26T21:46:12.183 に答える