JAva面接-ごみ回収器あなたの理解について話します

3400 ワード

一、ゴミ回収アルゴリズム:
  • 引用数
  • コピーアルゴリズム
  • マーク-クリア
  • マーク-整理
  • 二、ごみの回収方法:
    シリアル(Serial)、パラレル(Parallel)、コンカレント(CMS)、G 1
    1、シリアルゴミ回収器(Serial)
  • 単一スレッド環境のために設計されており、1つのスレッドのみでゴミ回収が行われているため、すべてのユーザスレッドが一時停止するため、サーバ環境に適していない.

  • 2、並行ゴミ回収器(Parallel)
  • 複数のゴミ収集スレッドが並行して動作している場合、ユーザスレッドは一時停止し、科学計算、ビッグデータ処理などの弱いインタラクションシーンに使用される.

  • 3、同時ごみ回収器(CMS)
  • ユーザースレッドとゴミ収集スレッドが同時に実行される(必ずしも並列ではなく、交互に実行される可能性がある)ため、ユーザースレッドを停止する必要がなく、インターネット会社が多く利用し、時間に応じて必要なシーンを適用する.

  • 4、G 1ゴミ回収器
  • G 1ゴミ回収器は、スタックメモリを別の領域に分割して並行してゴミ回収を行う.

  • 三、デフォルトのゴミ収集器をどのように表示しますか?
     java -XX:+PrintCommandLineFlags -version

    四、デフォルトのゴミ収集器はどれらがありますか?
    UseSerialGC,UseParallelGC,UseConcMarkSweepGC,UseParNewGC,UseParallelOldGC,UseG1G  
     
    五、ゴミ収集器
    Java 8以降はほとんどSerial Oldを使用しません
    新世代コレクターを配置すると、古い世代のコレクターが自動的に配置されます.
  • 新生代
  • シリアルGC(Serial)
  • パラレルGC(ParNew):配置-XX:+UseParNewGC、新生代パラレル、旧世代シリアル
  • 並行回収GC(Parallel Scavenge):
  • シリアルコレクタは新生代と旧年代の並列化、配置-XX:+UseParallelGC、新生代、旧年代ともに並列化
    制御可能なスループット
    てきおうちょうせいポリシー
  • 旧世代
  • シリアルGC(Serial Old)
  • パラレルGC(Parallel Old)
  • 同時マーキングクリアGC(CMS)
  • 利点:同時収集停止が低い
  • 短所:CPUリソースに対する同時実行の圧力が大きく、採用したマーキングクリアアルゴリズムにより大量の破片が発生する

  •  
    構成パラメータ
    新生代ごみ収集器
    新生代ごみ収集アルゴリズム
    古い時代のごみ収集器
    古い年代のごみ収集アルゴリズム
    -XX:+UseSerialGC
    Serial
    アルゴリズムのコピー
    Serial Old
    タグ→整理アルゴリズム
    -XX:+UseParNewGC
    ParNew
    アルゴリズムのコピー
    Serial Old
    タグ→整理アルゴリズム
    -XX:+UseParallelGC
    Parallel Scavenge
    アルゴリズムのコピー
    Parallel Old
    タグ→整理アルゴリズム
    -XX:+UseParalleOldlGC
    Parallel Scavenge
    アルゴリズムのコピー
    Parallel Old
    タグ→整理アルゴリズム
    -XX:+UseConcMarkSweepGC
    ParNew
    アルゴリズムのコピー
    CMS+Serial Old
    タグ-パージアルゴリズム
    -XX:+UseG1GC
    G 1は全体としてタグ整理アルゴリズムを採用する
    ローカルはアルゴリズムをコピーすることでメモリフラグメントは発生しません
     
     
     
     
     
     
     
     
     
     
     
    コード検証:
    /**
     * 1、-Xms10m -Xmx10m  -XX:+PrintGCDetails -XX:+PrintCommandLineFlags -XX:+UseSerialGC  (DefNew+Tenured)
     *
     * 2、-Xms10m -Xmx10m  -XX:+PrintGCDetails -XX:+PrintCommandLineFlags -XX:+UseParNewGC  (ParNew+Tenured)java8 
     * Java HotSpot(TM) 64-Bit Server VM warning: Using the ParNew young collector with the Serial old collector
     * is deprecated and will likely be removed in a future release
     *
     * 3、-Xms10m -Xmx10m  -XX:+PrintGCDetails -XX:+PrintCommandLineFlags -XX:+UseParallelGC (PSYoungGen+ParOldGen)
     *
     * 4、-Xms10m -Xmx10m  -XX:+PrintGCDetails -XX:+PrintCommandLineFlags -XX:+UseParallelOldGC (PSYoungGen+ParOldGen)
     *
     * 5、-Xms10m -Xmx10m  -XX:+PrintGCDetails -XX:+PrintCommandLineFlags -XX:+UseConcMarkSweepGC (ParNew+CMS)
     *
     *  :CMS Initial Mark
     *  ( ):CMS-concurrent-mark
     *  :CMS Final Remark
     *  ( ):CMS-concurrent-sweep
     */
    public class GCoverheadDemo {
    
        public static void main(String[] args) {
            int i = 0;
            List list = new ArrayList<>();
    
            while (true) {
                list.add(String.valueOf(++i).intern());
            }
        }
    }

    六、ごみ収集器の選択方法
  • シングルCPUまたはミニメモリ、シングルプログラム:-XX:UseSerialGC
  • マルチCPUは、バックグラウンドコンピューティング型アプリケーション:-X:UseParallelGCまたは-X:UseParallelOldGCなどの最大スループットが必要
  • マルチCPUは低停止時間を求めており、インターネットアプリケーション:-XX:+UseConcMarkSweepGC
  •  
     
     
    転載先:https://www.cnblogs.com/wjh123/p/11144320.html