2012-04-04 4 views
1

私はグローバルキャッシュを持つアプリケーションで作業しており、データパブリッシャーも持っています。問題は、私たちが頻繁にメモリ不足問題​​に直面していることです。今度はチューニングをしましたが、それだけでは十分ではありません。私たちには若い世代と年配の世代のオブジェクトが大量にあります。ほとんどの場合アプリはテニュアされた世代になり、OutOfMemoryErrorがスローされます。アプリケーションにグローバルキャッシュがある場合のガベージコレクションのベストプラクティス

我々は休止時間を避けるために、スループットコレクタを適用することができる2 CPUのホストを持っていますが、それはすぎなかった若い世代を収集し、それゆえ我々は並行低停止時間コレクタを使用していたよう。

このアプリケーションでは、VMを調整するための最良の方法はありますか?

マイナーGCをどのようにして増やすことができますか。

ありがとうございます。

+1

「グローバルキャッシュ」の内容を説明する必要があります。あなたは図書館を利用していますか?アーキテクチャに関する情報がなくても、この質問には答えられませんでした。 – Kai

+0

アプリケーションで最大ヒープサイズよりも多くのヒープサイズを使用している場合は、最大ヒープサイズを増やすだけでメモリを増やすことができます。コレクターを変更するか調整すると、保存できるオブジェクトの量に非常に微妙な変更が加えられます。 –

+0

@Peter Lawrey:通常はうまくいきますが、コールバックが大量にないときに問題が発生します。 – amicngh

答えて

1

私の最初のアイデアは、のWeakHashMapを使用していたが、その後、私は、この記事を見つけた:WeakHashMap is not a cache。その記事のリンクを参照してください。apache commonsが適しているかもしれません。

私の考えでは、特に中心的かつ重要なコンポーネントである場合は、独自のキャッシュを実装しないことがベストプラクティスです。ライブラリを使う方が良いです。それ以外の場合は、実装を常に調整しなければならず、新しい問題が何度も繰り返されます。したがって、すでにアプリケーションにカスタムキャッシュがある場合でも、ソリッドライブラリに切り替える作業は無駄になります。

+0

私は、VMのパフォーマンスコマンドでVMを調整しようとしています。 – amicngh

+0

@amicngh:あなたのキャッシュが 'OutOfMemoryException'を引き起こした場合は、VMをチューニングする代わりにキャッシュを再考するべきです。つまり、アプリケーションに膨大なメモリを与えても、この例外が発生する可能性があります。ちょっと後で。 – Kai

+0

私はあなたに同意しますが、私たちのグローバルキャッシュの変更はできません。私たちはビジネスの開始前に毎日朝にアプリケーションをバウンスします。 – amicngh

0

キャッシュがある場合は、古いデータを随時削除するメカニズムが必要です。それはあなたの仕事であり、vmsの仕事ではありません。 http://java-source.net/open-source/cache-solutions/oscacheよう

利用可能なキャッシュソリューションを使用すると、使用できるキャッシュエントリを期限切れにし、必要に応じて拡張するためにどのように異なる戦略を持っています。

編集:あなたはアプリケーションのコードを変更することはできません(あなたがコメントに示す方法)場合は、サーバにメモリを追加して、JVMが使用を許可されているヒープを調整することができます。これで問題は解決しませんが、表示される頻度は低くなります。

+0

サーバー。それは問題を軽減しますが、多くのコールバックが加入していますが、テニュアード・ジェネレーションが限界を超え、問題が発生します.Minor Collectionは規模が大きくなりません。マイナー・コレクションを増やす必要があります。 – amicngh

+0

ガベージコレクタは、キャッシュされたオブジェクトがプログラム自体によってキャッシュから削除されない場合、メモリを解放できません。ガベージコレクションのチューニングはそれを修正することができません。オブジェクトが丈夫に住んでいるかどうか、問題のないところにあれば。重要なのは、-Xmx512Mで設定できるヒープだけです。あなたのキャッシュは、それがやろうとしていることをしていないようです。どのキャッシュを使用しているかについてもっと情報を提供します。多分、何とか設定することができます。 – Christian

関連する問題