sortxの調整に影響を与えるJVMパラメータ

Java仮想マシンの設定パラメータは、時々、SPLのパフォーマンスに大きな影響を与える、ソート機能を使用することから、この論文では、パフォーマンスを改善するために、JVMの設定パラメータを最適化する方法を探るsortx。プロセスの分析は、興味のある学生が直接結論セクションを読み取ることができません。

1メモリ構成

旧世代 若い世代

エデン
S1
S2

示されているように、Java仮想マシンのメモリが、それは多くの場合、ヒープの言っている、それが若い世代と二つの部分の古い世代に分かれています。ターゲットは、若い世代のストレージのライフサイクルは、非常に短い寿命の長いオブジェクトの旧世代のストレージです。例えば、いくつかのガベージコレクション、まだ生きている主題の後に、そのオブジェクトが若い世代から古い世代に入ります。

若い世代は、3つのエリアに分割されている:エデン、サバイバー1、サバイバー2(以下エデン、S1、S2と呼びます)。エデン格納新しいオブジェクト、S1、およびS2は、交換可能に使用被写体場合ごみの店舗生存するために使用されます。

2リカバリ戦略

Java仮想マシンのガベージコレクションのポリシーは非常に我々は唯一のほとんどがパフォーマンスに影響を与えるいくつかの状況を懸念している、ここで、複雑です。

二つのタイプに分けJavaのガベージコレクション:フルGCとマイナーGC、前者は旧世代の回復で、一般的には、リサイクルの若い世代を目的として、非常に遅く、このすぐになります。当社のチューニングの目標は、頻繁に全GCを避けるためです。だから何のフルGCそれをトリガーでしょうか?その上で、新しいオブジェクトがエデンの領域に格納され、それはマイナーGCをトリガする際エデン領域がいっぱいになったとき、ゴミがオブジェクト今回はエデンエリアがクリアされ、生き残ったオブジェクトがS1またはS2ゾーンに有用であろうこれ回復プロセスを完了し、コピーします。このプロセスでは、エデンでS1またはS2ターゲットエリアフィットが生き残った場合、それは、古い世代に生き残ったオブジェクトを保存し、旧世代とスペースがない場合、それは完全なGCをトリガするだろう。

サバイバー領域はオブジェクトが古い世代が成長している、完全なGCがトリガされるようにバインドされていると、古い世代の成長につながる生き残った若い世代に合わせたときに簡単に、です。

3 sortxでのメモリ使用量

私たちは、sortx関数がパラメータを持っているN、N-バッファの数は、それぞれがカーソルから取り出されたレコードの数を表している知っています。だから、最も適切な値は、それを取るnは何ですか?

明らかに、nの値が大きすぎではない、それ以外の場合は、メモリのオーバーフローが発生します、使用することはできません。

その後、再び常にいくつかの試みの後に、あなたが使用することができるでしょう、とオーバーフローしませんが、小さな点を取るしようとしています。しかし、この時間は、場合、必ずしも最適な値ではないn個のメモリの値がエデンで占められ、そしてちょうど古い世代がほとんど占有フェッチするまで、その後、旧世代のデータが送信される次回を取り出すよりも大きいですフルGCを引き起こし、これが最も頻繁にトリガ時間のかかるとき。

だから、ビューのJavaの配布およびリカバリ計画のポイントから、理想的な状況であり、nはエデンのサイズよりもわずかに小さい、メモリが占​​有値。操作sortxのこのタイプの特徴があるので、これは永久的なメモリのいくつかのオブジェクトがある「投げるために使用され、うち使用する準備ができて、」です。

それでは、どのように何のn推定その後、エデンの面積の大きさを知っているのですか?

4メモリ割り当て

起動する設定はIDEで見ることができ、-Xmxパラメータは、javaに割り当てられたヒープメモリのサイズを指定します。例えば-Xmx10gは、メモリの10Gは、Javaに割り当てられたと言います。だから、Javaのこの10Gは、これらのゾーンに割り当てられましたか?

デフォルトでは、地区の比率は、このような程度です。

若い世代:旧世代= 3:7

エデン:S1:S2 = 8:1:1

      比率では、それは地区の大きさをうまくするのは簡単です、古い世代は7Gが占め、若い世代はエデン2.4G、S1およびS2 0.3Gを占め、それぞれを占め、3G、を占めています。スケールの開発者は、統計はすべて生き残った目標物の10分の1を占め、ほとんどのアプリケーションではその由来をjdkデフォルトであるといわれています。sortxが適切でない場合しかし、この比は、少なくとも、すべての状況に適しないかもしれません。

5.まとめ

原理nの値:(エデンのサイズに応じて)sortxを使用する場合、オーバーフローすることなく、nの値が良好ではなく、頻繁フルGCを起こさない適切な値を推定します。

次のように適切な方法、nの値があるかどうかを確認します。

1つの追加パラメータ-XX:+ PrintGC。

2つのランがsortx。

観察3コンソールは、頻繁な情報[フルGC(割り振りの失敗)......]小さなNの転送場合、もう一度お試し。

4だけたくさん[GC(割り振りの失敗)......]情報場合、nの値が適していると考えられます。

場合多くの5 [GC(割り振りの失敗)......]メッセージが表示され、時折ながらフルGC(割り振りの失敗)......]情報、nの値が適切であると考えることができます。

一時ファイルが小さすぎることができないようにする6。

6パラメータ調整

あなたは、パフォーマンスの追求を促進したい場合は、sortxの基本性能を満たすために、nは調整することで、一般的に、我々は、パラメータを調整する必要があります。sortxこれを計算する際にほとんど使用思えるだけ3/10、7/10のヒープと旧世代のメモリ、若い世代のデフォルトの割り当て。あなたはこの比率を調整したい場合は、順番に、あなたはパラメータ-XXを使用することができ、特別なブート構成を使用することができますsortx:NewSizeパラメータを調整すること。

たとえば、-XX:NewSizeパラメータ= 5グラム、若い世代のサイズを指定するには、5Gです。

リマインダーは、時間を調整し、古い世代は、スタック全体の1/5を占めていることは適切であり、あまりにも少しのスペースを残すことはできません。これは、Javaの流通戦略と同様に、このようなトータルスペースは十分のように多くの複雑な場合、あるためですが、連続していない、古い世代に直接オブジェクト。いくつかの似たような状況がありますが、それらを繰り返しません。

SurvivorRatio:同様に、エデンとS1の割合は、S2はまた、この比率を調整したい場合は、パラメータ-XXを使用することができ、パフォーマンスに影響を与えることができます。たとえば-XXは:= 1 SurvivorRatioエデンを表す:S1:S2 = 1:1:1。-XX:SurvivorRatio = 8エデンを表す:S1:S2 = 8:1:1。

一般的に、より大きなサバイバーエリア、オブジェクトは古い時代に入ったことを小さい確率は、そう-XXに構成された傾向があり、sortx行いますSurvivorRatio = 1。

7その他

コンフィギュレーション・パラメータが一致ガイドラインはありませんが、大の、時にはいくつかの古き良き世代(このような大規模なディメンション表としては、永久的なメモリを必要とする)、計算の種類に応じて調整する必要があり、時には大きな、より良い若い世代です。


おすすめ

転載: blog.51cto.com/12749034/2465398