インタビュー-JVM

JVMガベージコレクションのガベージ決定する方法まず、?GCルートが何であるかを知っています:

  1.ゴミは何ですか。

    要するに、メモリはもはや宇宙ごみに使用されていません。たとえば、次のように人P1 = NULL

  2.ガベージコレクション実行するために、どのようにオブジェクトが再利用できるかどうかを判断するには?

    2.1  リファレンスカウント:

  Javaでは、参照とオブジェクトが関連しています。あなたがオブジェクトを操作したい場合は参照でなければなりません。したがって、単純な参照カウント法によりオブジェクトが再利用することができるかどうかを決定することは明らかです。簡潔には、次に、参照の障害があるときはいつでも、それは、カウンタがインクリメントされるたびにローカル参照、カウンタは、物体0のカウンターは、もはや使用されている任意の時間に1つだけ減少される、オブジェクト・カウンタへの参照を追加このオブジェクトは、リサイクル可能なオブジェクトです。主流のJava仮想マシンの内部は、このアルゴリズムを選択しなかった理由をそう?最も重要な理由は、オブジェクト間の相互循環参照の問題を解決することは困難であるということです。(あなたが理解することができ、循環参照の問題を解決するために余裕がない、アルゴリズムが存在しますが、何の使用はありません)

    2.2  列挙ルート到達可能性解析(ルート検索パス)を実行します。

  円形の基準参照カウントの問題を解決するために、Javaメソッドは、所与の分析のために使用することができます。いわゆる「GCルーツ」又はGCがアクティブリファレンスに設定されているトレーシング「ルート設定」。基本的な考え方は、オブジェクトが任意の参照GCルーツ・チェーンに接続されていない場合、GCルーツダウンと呼ばれる検索の対象から、出発点として、「GCルート」と呼ばれる一連のオブジェクトを介して行われ、このオブジェクトは利用できません。つまり、関係の便利なオブジェクトグラフを参照することによって、ルートとして開始の所定のセットへの参照であるオブジェクトの(アクセシビリティ)に便利であることができる生きていると判断され、自然に全く便利存在しないデッドであると判定されます。

 

 

 

   オブジェクトのGCのルーツとして使用できるJava:

    VMスタック(スタックフレーム内のローカル変数は、ローカル変数テーブルと呼ばれる)オブジェクト参照。

    メソッド静的プロパティクラスオブジェクト参照エリア。

    リテラルの参照方法ゾーンオブジェクト。

    オブジェクトのネイティブメソッドスタックJNI(ネイティブメソッド)参照。

************************************************** ************************************************** *************************

第二に、あなたはJVMのチューニングとパラメータの設定をしたと述べ、どのようにシステムがデフォルトのJVMを確認し

1. JVMパラメータタイプ:

  標準的なパラメータ:

    -version javaの-help -showversion

  Xパラメータ(理解して):

    -Xint:解釈-Xcomp:-Xmixed上のネイティブコードにコンパイル最初時間:混合モード

  XXパラメータ

    ブールタイプ:

      式:-XX:+または - プロパティの値(+、有効を示している - 無効)   

      場合:

        かどうかコレクト詳細にGCを印刷する。-XX:-PrintGCDetails -XX:+ PrintGCDetails

        かどうかは、シリアルガベージコレクタ:-XX:-UseSerialGC -XX:+ UseSerialGC

    KVセッタータイプ:JPS -l Jinfoの-flag MetaspaceSize 2116

      式:-XX:キー=属性値属性値

      場合:

        -XX:MetaspaceSize = 128メートル:元スペース-XX:= 15 MaxTenuringThreshold:のフォーム、生存の最大数

    Jinfoの例では、どのように現在実行中のプログラムの構成を表示するには

      式:Jinfoの-flagプロジェクト項目数プロセス

      ケース:Jinfoのは5988 -flags:すべてのパラメータを

    余談(ピットタイトル):

      -Xmsと-Xmx、あなたがこれを説明しますどのように2つの古典的なパラメータがあります。

        -Xms:-XXと同等:InitialHeapSize(ヒープメモリの初期化)

        -Xmx:-XXと同等:MaxHeapSize(最大ヒープメモリ)

2.家族のプロパティビューJVMのデフォルトのインベントリー:

  1.まず、パラメータの家族の財産目録をチェックします。

    JPS

    -flag特定のパラメータのJavaプロセスID Jinfoの

    Jinfoの-flags JavaのプロセスID

  2.第2のビューパラメータ家族の財産目録:

    -XX:+ PrintFlagsInitial:メインの初期のデフォルト表示

      Javaの-XX:+ PrintFlagsInitial -version

      Javaの-XX:+ PrintFlagsInitial

    -XX:+ PrintFlagsFinal:メインビューは更新を修正

      Javaの-XX:+ PrintFlagsFinal -version "=":変更されません ":=":変更されました

    Javaの-XX:PrintFlagsFinal -Xss128k T(実行されるJavaクラス名)パラメータをプリントアウトするために実行するjavaコマンド

    -XX:+ PrintCommandLineFlags:印刷コマンドラインパラメータ(あなたがガベージコレクタを見ることができます)

      Javaの-XX:+ PrintCommandLineFlags -version

-XX:+ UseSerialGC:シリアルガベージコレクタ

-XX:+ UseParallelGC:パラレルガベージコレクタ

 ************************************************** ************************************************** *************************

第三に、あなたは通常、どのようなJVM一般的に使用される基本的な設定を動作しますか?

  1. -Xms:初期メモリサイズ、デフォルトは-XXに相当、1分の61物理メモリです。InitialHeapSize

  2. -Xmx:最大メモリアロケーション、-XXと同等1/4デフォルトの物理メモリ:MaxHeapSize

  3. -Xss:シングルスレッドのスタックサイズを提供し、デフォルトでは通常、-XXに相当512K〜1024K、次のとおりです。ThreadStackSizeは

  4. -Xmn:設定し、若い世代のサイズ

  5. -XX:MetaspaceSize:空間設定要素

    メタスペース恒久的性質と類似するが、メソッド領域JVM仕様で達成されます。しかし、それに代わって元と永久スペースの最大の違いは:元は、仮想マシン内のスペースが、ローカルメモリを使用することではありませんしたがって、デフォルトでは、ローカル・メモリ・コントローラによってボクセル空間のサイズ。

    -Xms10m -Xmx10m -XX:MetaspaceSize = 1024メートル-XX:+ PrintFlagsFinal

  6.代表的な設定の場合:

    -Xms128m -Xmx4096m -Xss1024k -XX:MetaspaceSize = 512メートル-XX:+ PrintCommandLineFlags -XX:+ PrintGCDetails -XX:+ UseSerialGC

  7. -XX:+ PrintGCDetails:GC収集ログ情報出力詳細

  

  8. -XX:SurvivorRatio:

    そして新世代エデンS0 / S1スペース比、デフォルト設定-XX:SurvivorRation = 8、エデン:S0を:S1 = 8:1:1、場合-XX:SurvivorRation = 4、エデン:S0:S1 = 4 :1:1。SurvivorRatio設定値は、数値エデン領域、S0 / S1と同様の割合です。

  9. -XX:NewRatio:

    ヒープ構造の割合で古い年に若い世代の設定、デフォルト:-XX:NewRatio = 4新生児-XXは、次の場合NewRatio = 2新世代が2歳を占め、1を占め、若い世代は、ヒープ全体の1/3を占めています世代は、4歳を占め、1を占め、若い世代には、スタック全体の1/5を占めています。NewRadio値は歳設定されている新世代の残りの1を占めました。

 

 

  10. -XX:MaxTenuringThreshold:ごみの設定した最大歳

 

 

処方として-Xmsと-Xmx(ヒープメモリ)、メモリの変動を回避します。

*****************************************************************************************************************************

四、强引用、软引用、弱引用、虚引用分别是什么?

*****************************************************************************************************************************

五、谈谈你对OOM的认识

*****************************************************************************************************************************

 

*****************************************************************************************************************************

 

*****************************************************************************************************************************

 

*****************************************************************************************************************************

おすすめ

転載: www.cnblogs.com/luliang888/p/12154551.html