JVMの設定と共通パラメータ一般的に使用されるGCのチューニング戦略

 

 

リンクします。https://juejin.im/post/5c94a123f265da610916081f

 

JVMの設定共通パラメータ

ヒープパラメータ

回復パラメータ

上記表に示すように、現在では、シリアルパラレル同時三種類があり、アプリケーションのための大容量メモリ、シリアル低性能、メイン平行の使用と同時二種類。UseParallelGCとUseConcMarkSweepGCをで指定された並列並行GCポリシーは、実装戦略を構成するために使用されるコンフィギュレーションパラメータのいくつかの詳細があります。XX:たとえばParallelGCThreads、XX:CMSInitiatingOccupancyFractionが好きです。典型的には、選択的にのみ平行回復ヤング標的領域(時間がかかる)、旧同時ゾーン選択(消費CPU)。

プロジェクトの一般的な構成

一般的な組み合わせ

一般的なGCのチューニング戦略

GCチューニングの原則

チューニングの前に、我々は以下の原則を覚えておく必要があります。

我々はパラメータエラーが設定されていないので、問題のほとんどは、GCのJavaアプリケーションにつながるが、コードは、問題である;ほとんどのJavaアプリケーションはサーバー上でGCを最適化する必要はありません、オンラインで適用する前に、最初のマシンのJVMパラメータを考慮し、最適に設定されています(最適な);作成されたオブジェクトの数を減らし、グローバル変数およびラージ・オブジェクトの使用を減らし、GCはあくまで最後の使用を最適化することであり、実際の使用では、状況のGC分析は、最適化されたコード最適化GCパラメータよりもはるかに多くのです。

GCのチューニングの目的

古い時代に転送されるオブジェクトの数が最小限に抑えられ、GCの実行時間を短縮します。

戦略1:新世代の脇に新しいオブジェクト、コストが全GCマイナーGCよりもはるかに高いので、可能な限りオブジェクト割り当ての新世代のスペース配分の新世代のかどうか、実際のプロジェクトのGCログ解析によると、賢明であるため、合理的かつ直接的に古い時代に状況や新しいオブジェクトを最小限に抑えるために、新世代の大きさを調整する「-Xmn」コマンドで適切な。

策略 2:大对象进入老年代,虽然大部分情况下,将对象分配在新生代是合理的。但是对于大对象这种做法却值得商榷,大对象如果首次在新生代分配可能会出现空间不足导致很多年龄不够的小对象被分配的老年代,破坏新生代的对象结构,可能会出现频繁的 full gc。因此,对于大对象,可以设置直接进入老年代(当然短命的大对象对于垃圾回收老说简直就是噩梦)。-XX:PretenureSizeThreshold 可以设置直接进入老年代的对象大小。

策略 3:合理设置进入老年代对象的年龄,-XX:MaxTenuringThreshold 设置对象进入老年代的年龄大小,减少老年代的内存占用,降低 full gc 发生的频率。

策略 4:设置稳定的堆大小,堆大小设置有两个参数:-Xms 初始化堆大小,-Xmx 最大堆大小。

策略5:注意: 如果满足下面的指标,则一般不需要进行 GC 优化:

MinorGC 执行时间不到50ms; Minor GC 执行不频繁,约10秒一次; Full GC 执行时间不到1s; Full GC 执行频率不算频繁,不低于10分钟1次。

 

 

おすすめ

転載: www.cnblogs.com/shoshana-kong/p/11314960.html