ホームページ  >  記事  >  Java  >  JAVA の GC の概念を 3 分で理解する

JAVA の GC の概念を 3 分で理解する

angryTom
angryTom転載
2019-11-30 16:36:321634ブラウズ

JAVA の GC の概念を 3 分で理解する

序文

GC (ガベージ コレクション) は、JVM を学習するプロセスにおいて避けられないハードルです。 GC を体系的に勉強します。

JAVA の GC の概念を 3 分で理解する

何かをする前に、なぜそれをするのかを知る必要があります。これは GC に限らず、日々の勉強や生活にも当てはまります。理由を理解してください。理由を知っていてのみ、危険なく戦うことができます。

(推奨ビデオ: java ビデオ チュートリアル )

まず、GC が存在する理由と、GC が JVM でどのような役割を果たしているかを理解しましょう。

なぜ GC があるのか​​

C を使用したことのある学生は、オブジェクトが占有するメモリはプログラムが終了するまで占有され、プログラムが終了するまで割り当てられないことを知っているかもしれません。他のオブジェクトに明示的に解放されます。これらの不要なオブジェクトを手動でクリアしないと、すぐにメモリがいっぱいになってしまいます。JVM では、GC がスカベンジャーの役​​割を果たします。どのオブジェクトが不要なオブジェクトであり、どのように続行するかを判断するのに役立ちます。ガベージ コレクションとメモリ生成とメモリ割り当てを決定する戦略**。

学生の中には、JVM が GC 作業を行ってくれるのに、なぜ GC を学ぶ必要があるのか​​と疑問に思う人もいるかもしれません。JVM にすべてを任せるのは良いことではないでしょうか?もちろん、私たちの日常生活では、一般的に GC の一部の詳細を気にすることはありませんが、メモリ リーク、メモリ オーバーフロー、および高同時実行性のボトルネックに遭遇した場合、GC を操作してより詳細な分析を行う必要があり、監視と規制を行う必要があります。

メモリ リーク: プログラム内で動的に割り当てられたヒープ メモリが解放されない、または何らかの理由で解放できないことを指します。その結果、システム メモリが無駄に消費され、速度低下などの重大な結果につながります。プログラムの実行速度が低下したり、システムがクラッシュしたりする場合もあります。

メモリ オーバーフロー: アプリケーション システムに回復不可能なメモリが存在するか、使用されるメモリが多すぎるため、最終的にプログラムが使用するメモリが提供可能な最大メモリを超えて実行されます。

#次に問題が発生します。ガベージ コレクションを実行する必要があります。まず、ガベージがどこにあるのかを知る必要があります。

ガベージがどこにあるのかを知る必要があります

前に JVM の実行時メモリ領域について説明しましたが、スレッドはスレッド排他領域とスレッド共有領域に分割できることがわかりました。スレッド排他領域のメモリ ライフ サイクル (プログラム カウンタ、仮想マシン スタック、ローカル メソッド スタック) はスレッドと一致しており、これらの領域に割り当てられるメモリ サイズはクラスのサイズに関連しています。つまり、クラス構造が固定されている場合、メモリのこの部分は変更されません。ヒープメモリとスレッド共有領域のメソッド領域は異なります。ヒープメモリとメソッド領域で使用されるメモリは、メソッドまたはスレッドの実装が異なるため、コンパイル時に決定できません。インターフェイスとメソッド さまざまな制御条件分岐によって実行されるコードは、まったく逆の場合があります。実行時にどのオブジェクトが作成されるかだけがわかります。メモリのこの部分の割り当てとリサイクルは動的であり、GC はメモリのこの部分に焦点を当てます。

例: JVM が車の場合、スレッド専用領域は部品のようなものです。これらの部品の寿命は基本的に工場出荷時にわかりますが、スレッド共有領域はガソリンのようなものです。ガソリンの量は走行ルートに関係しているため、より燃料効率の高い運転方法など、この部分が動的に変化することに重点を置いています~

この記事は php 中国語 Web サイト ## から引用しています。 #Java チュートリアル

コラム、学習へようこそ!

以上がJAVA の GC の概念を 3 分で理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。