2011-02-09 8 views
1

私はApache Tomcat 7.02をサーバーとして使用しています。私はsphinx4を使用してアプリケーションを作成し、Apache Tomcatサーバーにデプロイしました。このSphinx4アプリケーションは、目的私はJavaのヒープスペース(エクスポートCATALINA_OPTS = " - Xms1536m - Xmx1536m")として多くのメモリを割り当てました。私がサーバを配備したサーバは、Debian Lennyを搭載した64ビットシステムと、2GbのRAMです。私はサーブレットを作成し、データを投稿して結果を得ました... 10人のユーザーのために実行すると約8分かかりますが、100人のユーザーに対して同時に実行すると、tomcatの状態でこれを表示しますリソースを少なくするためにJVMを最適化する方法

無料メモリ:37.0メガバイト総メモリ: 1484.81メガバイト最大メモリ:1484.81メガバイト

私も)(にSystem.gcを使用してみましたが、それは何のgud.Soしなかったが、私ができてどのような方法がありますJVMのメモリ状態を確認し、必要なときに解放しますか?

答えて

4

リソースの使用先を決定する必要があります。私はあなたがメモリプロファイラを使用し、より少ないメモリを消費するようにプログラムを変更することをお勧めします。

あなたはメモリ消費量を削減するために-XX:+UseCompressedOopsを使用することができ、64ビットJVMを使用している場合(これは代わりに、64ビット参照の32ビットの参照を使用しています)

EDIT:調子ではないことができます場合は、あなたのアプリケーションではありサーバーのアップグレードを検討する価値があります。 24 GBのサーバーは£1,800前後のコストがかかり、コードを変更しなくても1000人のユーザーに対応できます。 ;)

+0

Hey Peter、良いメモリプロファイラをお勧めしますか?...そして、-XX:+ UseCompressedOopsは何かいいですか? –

+0

私は-XX:+ UseConcMarkSweepGCを使用しました。これは何の効果もありますか?...このパラメータを使用して並行性の問題を改善しました... –

+0

オプションを試してみることをお勧めします。 (64ビットJVMに違いはありますか?)VisualVMは、JDKに付属の無料のメモリプロファイラです。私はYourKitが好きです。 –

関連する問題