0

スワッピングを減らすために、Java アプリケーションのメモリ フットプリントを減らしたいと考えています。この目的のためにスタック サイズ (Xss パラメーター) を減らすことを考えていましたが、スタック メモリがどのように割り当てられているか、スレッドごとのデフォルトの 512k (32 ビット OS の場合) が常駐メモリの量に関係なく常駐メモリに常駐しているかどうかはわかりません。実際に使用。

スタックメモリを減らすとスワッピングが減りますか?

更新: アプリケーションのプロファイリングを提案しないでください - それは既に行われています。

4

3 に答える 3

5

いくつのスレッドを実行していますか? 膨大な数のスレッドと非常に寛大なスタック サイズ (たとえば、10k スレッドと 256KB スタック サイズ) を使用しても、ヒープ スペースは 2GB しかありません。

あなたは 32 ビット JVM で実行していると言うので、これは比較的小さなシステムだと思います。いくつかのオプションがあります:

  • 64 ビット JVM に切り替えます。これで大量のアドレス空間ができ、スタックサイズは重要ではなくなりました

  • あなたのマシンは小さすぎます。10,000 以上のスレッドで 2GB のスタックが問題になる場合は、「小さすぎる」マシンで「大きすぎる」アプリケーションを実行していることになります。ソフトウェアでの作業を減らすか、ハードウェアを追加購入する

  • スレッド数を減らす

  • 問題は実際には他の場所にあり、間違ったツリーを吠えています

于 2012-04-07T00:13:03.903 に答える
0

どのくらいのメモリを使用しており、どれだけ節約する必要がありますか?

スタックはスレッドあたり 512K しかないため、保存する価値のある値 (100Mb) の入力を開始するには 200 スレッドが必要であることを意味します。

スタック メモリの使用は「非常に頻繁に」行われるため、スワップ アウトの対象としては不適切だと考えます。メモリに制約のある環境を扱っていない限り?

于 2012-04-07T00:10:44.977 に答える
0

はい、もちろん、そのライフルールはラストインファーストアウトで、スタックが少なく、スワップが少なくなります

于 2012-04-06T23:59:19.450 に答える