コードの行を書いたので、多くの質問をしました

インタビュアー:ローカルバイト配列型を作成する方法?
ホワイト:(新しいバイト=あまりにも基本的な、含み笑い)バイト[]配列ではありません [1024]。

インタビュアー:それはGCの回復になるオブジェクトの配列へのローカル配列変数が指しますか?
ホワイト:何の変数がありません発生するガベージコレクションのうち、リサイクルされるオブジェクトの配列を指し、またはローカル変数、ローカル変数テーブルのための仮想マシンのスタック領域(スロット)での配列は再利用されます。

インタビュアー:配列オブジェクト変数の参照は、GC回復できないだろう、なぜ?
白:オブジェクトへのオブジェクトの一連のJVM開始点を基準として「GCのルーツ」と呼ばれ、参照関係を介してオブジェクトをトラバース、トラバースされる(到達)は、ライブオブジェクトであると判定され、トラバースされるべきではありません(到達不能)オブジェクトはリサイクル可能なオブジェクトであると決定され、他のオブジェクトへのすべてのライブオブジェクトを見つけ、死んだオブジェクトであることが決定され、これは到達可能性解析アルゴリズムです。場合配列が行われ、現在のスレッドのスタックフレームのJava仮想マシンのスタックに作成され、ローカル変数スタック・フレーム・テーブル・アレイ・ポインタは配列変数ポイント、設定したときアレイ= NULLが格納され、このローカルアプローチ変数これは、このオブジェクトの間の配列オブジェクト配列、配列及び配列参照は、参照型の変数「GCルーツ」のスタックのJava仮想マシンに、ガベージコレクションが発生すると、スタックフレームを遮断され、もはや参照されません、参照関係を横断し、アレイは「GCのルーツが」到達不能である鎖間の会合を、引用していないオブジェクトを発見、それはリサイクル可能なオブジェクトが回収されるのを待っているとして分類されます。

インタビュアー:参照のスタックフレームに加えて、あなただけのローカル変数のタイプで、Java仮想マシンのスタックはまた、「GCのルーツ」として使用することができ、「GCのルーツ」として使用することができます言いましたか?
ホワイト:; Javaクラスの参照型の静的変数、現在のすべてのメソッドはパラメータ、ローカル変数と一時的な値の型への参照で呼び出されているすべてのJavaクラス、現在ロードされたブートまたはシステムクラスローダクラスローダ、などjava.utilのrt.jarの* ;. Javaクラスが参照型の一定の定数プール時間実行、参照の文字列定数プール、JNIネイティブメソッドスタックにおける参照; GCにいくつかの静的データ構造の点の仮想マシンヒープオブジェクトを参照し、例えば、宇宙でのHotSpot VMは、多くのそのような参照があると述べました。

インタビュアー:オブジェクトが回収対象として識別され、それから出てリサイクルされますか?
ホワイト:必ずしもそうではありません。オブジェクトはリサイクル可能なオブジェクトとして識別するだけでなく、何のカバーは、このオブジェクトのfinalize()メソッド、またはファイナライズを(参照することがないことを、改めてスクリーニングを通過する必要があります)は、カバーのfinalize()メソッドまたはファイナライズがない場合の方法は、仮想マシンを実行されていないされた後、 ()メソッドが他のオブジェクトと呼ばれる場所に配置され、そのオブジェクトが出て再循環され、仮想マシンが実行されたF-キューキュー、キュー・オブジェクトをファイナライズ()メソッドは、仮想マシンであろう優先度の低いファイナライザスレッドの実行は、()メソッドは、限り、再びGCのルーツコレクションのメンバーを参照しているオブジェクト参照チェーンとGCのルーツ仲間として、それは回復不能としてマークされますファイナライズの実行中に作成します生きているオブジェクト。

インタビュアー:そういえばちょうどなってガベージコレクション、マイナーGC、メジャーGCとFull GCので、違いは何ですか?
ホワイト:マイナーGCは、(エデンエリアとサバイバーの領域を含む)新世代のガベージコレクションで起こった新世代のGC、を意味し、マイナーGCをトリガしたときに新しい世代が新しいターゲットのためのメモリ空間を割り当てることができないとき。非常に短いの新世代のほとんどのオブジェクトのライフサイクルなので、高周波マイナーGCのそれはストップ世界をトリガーするのにそう、起こるが、それはすぐに回復しました。主なGCの古い出現の主なGCをリサイクルするための終身面積クリーンアップは、典型的には、少なくともマイナーGC一度起こります。全体新世代のフルGC、旧世代、グローバルスコープのGCの要素スペース(メタスペース、置換パーマ世代以上java8)。フルGCが主なGCを意味するものではありません、マイナーGC +主なGCを意味するものではありません、どのようなガベージコレクションの説明するために、ガベージコレクタの組み合わせを使用するかを確認するには、フルGCの必要性が発生しました。

インタビュアー:どのようなガベージコレクションアルゴリズム?
ホワイト:マーク-スイープアルゴリズムは、二つの部分に分かれてマークされ、クリアされます。オブジェクトを再利用することがまず必要性、およびラベル付けが完了した後、すべてのオブジェクトアウト均一なリサイクルが標識されています。いいえ、第二、メモリの断片化の多くを持つことになります、マークされ、利用可能なメモリ空間を引き起こして、クリアしたときに大きなオブジェクトの割り当て、連続ではありません。まず、マークとスイープ効率が非常に高いではありません。このアルゴリズムは簡単ですが、2つの欠点がありますガベージコレクションの十分なスペースをトリガすることを余儀なくされました。
コピーアルゴリズム使用可能なメモリ空間は、この1がアップに使用され、それらの各1、ことを除いて、二つの等しいサイズに分割され、また別のものにライブオブジェクトをコピーしますし、元が使用されてきましたメモリ空間の一部は、一度オフに回復していること。このアルゴリズムは、一般的にガベージコレクションの新しい世代で使用されています。時間のためのアルゴリズム、宇宙のスイープ効率が、オブジェクトは非常に生きているとき、コピー操作の効率が低くなり、あなたは半分しかメモリ空間の使用率が高くない使用することができます-複製アルゴリズムは、マークを解決するために。

マーク-ソートアルゴリズムは、3つの部分に分かれています:まず、必要性が回復することを、すべてのオブジェクトをマークし、すべての生存オブジェクトが最後に移動されに第二があり、第三はオフに回収されるすべてのライブオブジェクトの境界外のメモリ空間です。
マーク- 、スペースの問題の低い利用をマルチコピーアルゴリズム低い複製効率を解決するだけでなく、メモリの断片化の問題を解決するためのアルゴリズムをソートします。

メモリ空間のオブジェクトの有効期間に応じ世代収集アルゴリズムは、異なるブロックに分割され、次いで、異なるブロックに対して異なるアルゴリズムを使用して回収しました。オブジェクトの生存時間の長老たち、そしてより多くのオブジェクトは、あなたが使用できるようにしながら、一般的には新世代へのJavaヒープと古い時代、ライブオブジェクトの短い、わずかな量で、オブジェクトの新世代の生存期間は、あなたが、コピーアルゴリズムを使用することができますマーク - スイープとマーク - ソートアルゴリズム。

インタビュアー:JVMガベージコレクションの実行時データ領域方式エリアそれ?
白:方法およびヒープ同じ領域が、スレッド共有メモリ領域を仮想マシンにロードされたそのような情報を格納するために使用される、コード・タイムコンパイラ、スタティック変数および定数およびその他のデータ。Java仮想マシン仕様の規定によると、メモリの割り当て領域の方法は、需要を満たすことができない、仕様の仮想マシンは、ガベージコレクションを実装することはできませんが、メソッド領域の回収効率に比べて、ヒープとガベージコレクション効率ので、OutOfMemoryErrorが発生がスローされます低すぎるが、メモリ領域のこの部分もリサイクルすることができます。ガベージコレクションの方法は、2つの領域、すなわち、廃棄物の回収、不要な定数クラスの再利用があります。一定のオブジェクトが参照されなくなったときの任意の場所は、廃止された定数としてマークされた場合は、この定数を再利用することができます。メソッドのゾーンクラスには、次の3つの条件は、未使用のクラスとしてマークすることができます満たす必要があります。Javaヒープオブジェクトクラスのインスタンスがない、クラスをロードするクラスローダは、クラスのjava.langに対応し、回収されました.classファイルオブジェクトは三つの条件の上に満足クラスは、例えばホットスポット、パラメータを制御する必要があり、リサイクルすることができるが、回収されない場合、どこにも参照されない、クラスの任意の場所にアクセスする方法で反映させることができません仮想マシンが回復するかどうか-Xnoclassgcパラメータコントロールを提供します。

インタビュアー:あなたはJVMや古い時代の新しい世代のサイズを設定した場合、どのようにあなたがコントロールしていますか?
ホワイト:新世代の構成原理:
1.優先順位の応答時間が追求する
大規模な一連の新世代として、最小システムの応答時間に近くなるまで、新世代の実態の大きさを調整することで、この需要を。新しい世代が比較的大きいため、ガベージコレクションの頻度発生は比較的低く、速い応答時間となります。

2.優先スループット追求する
新世代を大きく設定するように、オブジェクトのほとんどは、新しい世代に回収されるスループット優先アプリケーションを。そして、応答時間を求めていない、ガベージコレクションを並列に実行することができます。

小さすぎる設定3.避けては、
新しい世代が小さすぎる設定されている、YGCは非常に頻繁になり、一方で、古い時代に直接オブジェクトにつながる可能性があり、あまりFullGCの古い領域よりも起こりました。

年に旧原則の設定:
追求する1.優先応答時間
このケースを、あなたが最短時間のために、コレクションのポーズをCMSコレクタを使用することができますが、そのメモリの割り当ては、セットは小さな断片を回収し、頻繁に増加原因となる場合は、ことに留意すべきである。もしセット大きな、回復時間が非常に長くなります。ですから、最善の解決策は、メモリサイズを調整し、分析GClogガベージコレクションの情報に基づいています。

2.優先スループット追求
スループットは通常、大規模な小さな古い時代の新しい世代に出リサイクルの新世代で短命のオブジェクトを優先順位を割り当てる必要があります。

懸念は、それらのもののバックエンドの開発を記録し、迷子ありません

おすすめ

転載: www.cnblogs.com/windrui/p/11997603.html