[JVMの深い理解] CMSガベージコレクター

GCの問題処理能力を体系的に習得できますか?いくつかの影響因子が相互に原因と結果あるという問題をどのように分析するのですか?たとえば、サービスのRTが突然上昇した場合、GC時間の増加、スレッドブロックの増加、遅いクエリの増加、CPU負荷の増加の4つの症状があります。原因はどれですか。GCに問題があるかどうかを判断する方法は?CMSを使用する際の一般的な問題は何ですか?根本原因を判断する方法は?これらの問題を解決または回避する方法は?この記事を読んだ後は、CMS GCの問題処理を体系的に理解し、これらの問題をより簡単に解決できるようになると思います。始めましょう。

序文

GCの問題処理を体系的に習得したい場合は、ここで著者が学習パスを示します。記事のフレームワーク全体もこの構造に従って拡張され、主に4つの主要なステップに分かれています。

  • 知識システムを確立します 。JVMメモリ構造からガベージコレクションアルゴリズムおよびコレクターまで、GCの基本を学び、一般的に使用されるいくつかのGC問題分析ツールを習得します。

  • 評価指標の決定: 基本的なGC評価方法を理解し、独立したシステムの指標を設定する方法、およびビジネスシナリオでGCに問題があるかどうかを判断する手段を理解します。

  • シナリオ調整の実践: 知識とシステム評価の指標を使用して、CMSの9つの一般的なGC問題シナリオを分析および解決します。

  • 経験の要約と最適化: プロセス全体を要約し、作成者の提案をいくつか提示すると同時に、要約された経験を知識システムに改善します。

1.GCの基本

正式に開始する前に、簡単な準備をして、JVMメモリパーティション、収集アルゴリズム、コレクターなどの一般的な概念を紹介しましょう。より優れた基盤を持つ学生は、この部分を直接スキップできます。

2.1基本概念

  • GC:  GC自体には3種類のセマンティクスがあり、特定のシナリオに応じて、以下を異なるセマンティクスに組み込む必要があります。

    • ガベージコレクション:ガベージコレクションテクノロジー、名詞。

    • ガベージコレクター:ガベージコレクター、名詞。

    • ガベージコレクション:ガベージコレクションアクション、動詞。

  • ミューテーター: ガベージプロダクションの役割、つまり、アプリケーションであるガベージメーカーは、Allocatorを介して割り当てと解放を行います。
  • TLAB: スレッドローカル割り当てバッファーの省略形であるCASベースの排他的スレッド(ミューテータースレッド)は、最初にEdenのメモリブロックにオブジェクトを割り当てることができます。Javaスレッド専用のメモリ領域にはロックの競合がないため、割り当て速度が速くなります。 TLABはスレッド専用です。
  • カードテーブル: 中国語訳はカードテーブルで、主にカードページのステータスをマークするために使用されます。各カードテーブルアイテムはカードページに対応します。カードページのオブジェクト参照に書き込み操作がある場合、書き込みバリアは、オブジェクトがダーティとしてマークされているカードテーブルのステータスを変更します。カードテーブルの本質は、世代間の参照の問題を解決することです。具体的な解決策については、StackOverflowでこの質問を参照する 、cardTableRS.appのソースコードを調べてください。

 

 

 

 

 

 

 

 

 

おすすめ

転載: blog.csdn.net/qq_41893274/article/details/113915188