1 ゴミとは
- ガベージ コレクションは、Java 言語の副産物ではありません。早くも 1960 年に、メモリの動的割り当てとガベージ コレクション テクノロジを使用し始めた最初の Lisp 言語が誕生しました。
- ガベージ コレクションには、次の 3 つの典型的な問題があります。
- どのメモリを再利用する必要がありますか?
- いつリサイクルされますか?
- リサイクルする方法は?
- ガベージ コレクション メカニズムは Java の署名機能であり、開発効率を大幅に向上させます。今日では、ガベージ コレクションはほとんど現代言語の標準構成と呼ばれています. このような長い開発期間の後でも, Java のガベージ コレクション メカニズムはまだ進化しています. さまざまなサイズのデバイスとさまざまな特性を持つアプリケーション シナリオは、ガベージ コレクションに新たな課題をもたらしました.もちろん、ここは取材のホットスポットでもあります。
ダチャンのインタビューの質問.
アント・フィナンシャル
cmsとg1に焦点を当てたガベージコレクション期間の種類、それぞれの長所と短所を知っていますか
一方: JVM GC アルゴリズムとは何ですか? また、現在の JDK バージョンで使用されているリサイクル アルゴリズムは何ですか?
片面: G1 リサイクル業者がリサイクル プロセスについて語る
GCとは?なぜGCがあるのですか?
一方:GCの2つの判定方法は?CMSコレクターとGCコレクターの特徴。
バイドゥ
GCアルゴリズムについて話しましょう、世代のリサイクルについて話しましょう
ガベージ コレクションの戦略とアルゴリズム
天猫
一方: jvm GC の原則、JVM がメモリを再利用する方法
一方: CMS の機能、ガベージ コレクション アルゴリズムとは何ですか? それぞれの長所と短所、および共通の短所は何ですか?
ディディ
一方: Java のガベージ コレクション期間とは? g1 のアプリケーション シナリオについて話しましょう. ガベージ コレクション期間を通常どのように組み合わせて使用しますか?
景東
どの種類のガベージ コレクターを知っていますか、それぞれの長所と短所は、原則、プロセス、長所と短所を含む cms と G1 に焦点を当てています。ガベージ コレクション アルゴリズムの実装理由。
アリ
ガベージ コレクション アルゴリズムについて話す
ガベージ コレクションはどのような状況でトリガーされますか?
適切なガベージ コレクション アルゴリズムを選択するにはどうすればよいですか?
JVM にはどのような種類のガベージ コレクタがありますか?
バイトビート
一般的なガベージ コレクター アルゴリズムとは何ですか?また、それらの長所と短所は何ですか?
System.gc() と runtime.gc() は何をしますか?
一方: Java GC メカニズム? GC ルートとは
2 つの側面: Java オブジェクトのリサイクル方法とリサイクル アルゴリズム。
CMSとG1を理解していますか?CMSはどのような問題を解決し、リサイクルプロセスについて話します。
CMS リサイクルが数回一時停止しましたが、なぜ 2 回一時停止したのですか。
ごみは何ですか
- ゴミとは?
- ガベージとは、実行中のプログラムでポインタを持たないオブジェクトを指し、このオブジェクトはリサイクルが必要なガベージです。
- 実行中のプログラムのどのポインタからもオブジェクトに到達できなくなった場合、オブジェクトはガベージと見なされます。
- メモリ内のガベージが時間内にクリーンアップされない場合、これらのガベージ オブジェクトによって占有されたメモリ領域はアプリケーションの終了まで保持され、予約された領域は他のオブジェクトによって使用できなくなります。メモリ オーバーフローにつながることさえあります。
2 GC が必要な理由
GC を学びたい場合は、まず GC が必要な理由を理解する必要があります。
- 高級言語の場合、ガベージ コレクションを実行しないと、メモリは遅かれ早かれ消費されるというのが基本的な理解です。なぜなら、リサイクルせずにメモリ空間を割り当て続けることは、家庭のゴミを掃除せずに絶えず生成するようなものだからです。
- ガベージ コレクションは、未使用のオブジェクトを解放するだけでなく、メモリ内のレコード フラグメントをクリアすることもできます。最適化は、占有されているヒープ メモリをヒープのセクションに移動し、JVM がソートされたメモリを新しいオブジェクトに割り当てることができるようにします。
- アプリケーションプログラムが扱う業務が大規模かつ複雑になり、ユーザーが増えるにつれて、アプリケーションプログラムの正常な動作は GC なしでは保証できなくなります。また、STW の原因となることが多い GC は、実際のニーズに対応できないため、GC の最適化を引き続き試みます。
3 初期のガベージ コレクション
- C/C++ の初期の頃、ガベージ コレクションは基本的に手動で行われていました。開発者は、メモリの割り当てに new キーワードを使用し、メモリの解放に delte キーワードを使用できます。たとえば、次のコード:
- この方法は、メモリ解放のタイミングを柔軟に制御できますが、頻繁なアプリケーションとメモリの解放の管理負担が開発者にもたらされます。プログラマーのコーディングの問題により、再利用するのを忘れたメモリー領域がある場合、メモリー・リークが発生します。ガベージ オブジェクトは、メモリにポップアップしてアプリケーションをクラッシュさせるまで、決してクリアできません。
4 Java ガベージ コレクションのメカニズム
- 自動メモリ管理。開発者が手動でパラメータ化してメモリ割り当てとリカバリを行う必要がないため、メモリ リークやメモリ オーバーフローのリスクが軽減されます。
- ガベージ コレクション期間がなければ、java は cpp と同じになり、さまざまなダングリング ポインター、ワイルド ポインター、およびリークが頭痛の種になります。
- 自動メモリ管理メカニズムにより、プログラマは重いメモリ管理から解放され、ビジネス開発により集中できるようになります。
- Oracle の公式 Web サイトのガベージ コレクションの概要
- https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/toc.html
心配する
- Java開発者にとって、自動メモリ管理はブラックボックスのようなもので、「自動」に頼りすぎると大惨事になり、最も深刻なのは、プログラムがメモリオーバーフローを起こしたときにJava開発者の立場を弱めてしまうことです。-解決スキル。
- 現時点では、JVM の自動メモリ割り当てとメモリ リカバリの原理を理解することが非常に重要です. JVM がメモリを管理する方法を本当に理解して初めて、問題が発生したときにエラー例外ログに基づいて問題を迅速に特定し、問題を解決することができます. OutOfMemroyError が再び発生します。
- さまざまなメモリ オーバーフローやメモリ リークのトラブルシューティングが必要な場合、より高い同時実行性を実現するためにガベージ コレクションがシステムのボトルネックと呼ばれる場合、これらの「自動化された」テクノロジに必要な監視と調整を実装する必要があります。
それらの地域でのリサイクルについて心配する必要がありますか?
- ガベージ コレクターは、若い世代、古い世代、または完全なヒープとメソッド領域をリサイクルできます。
- その中で、Java ヒープはガベージ コレクターの焦点です。
- 時間に関して:
- ヤングゾーンを頻繁に集める
- 少ないときに古いエリアを集める
- パーマエリア(またはメタスペース)は基本的に動かさない