JVMとガベージの関係

JVMとガベージの関係

[[408351]]

この記事はWeChatの公開アカウント「Code on Java」から転載したもので、著者はCode on Javaです。この記事を転載する場合は、Java Code の公開アカウントにお問い合わせください。

始める前に、ヒープとは何かを確認しましょう。ご存知のとおり、私たちが日々作成するほぼすべての Java オブジェクトはヒープ上に保存されるため、ヒープは管理者が巨大なオブジェクト インスタンスを管理する巨大なオブジェクト プールであると言っても過言ではありません。

オブジェクト プール内のオブジェクトの参照階層は、非常に深くなる場合があります。たとえば、非常に頻繁に呼び出されるインターフェースの場合、オブジェクトの生成速度は非常に優れています。オブジェクト間の関係はネットワークとして記述できます。 Java ではメモリが無限にあるという印象を常に与えますが、オブジェクトは減少せずに増加し続けることはできないため、ガベージ コレクション操作が必要になります。

では、JVM はどのようにしてガベージを見つけるのでしょうか?

この記事では、「ガベージ コレクション」を GC と呼びます。

テレビシリーズ「九族滅亡」を覚えていますか?

例えば、蕭寒皮は皇帝を平手打ちし、皇帝の目は黒くなり、顔は腫れ上がった。皇帝は非常に怒り、憎しみを晴らすために蕭寒皮の9つの氏族を処刑するよう命じようとしました。

ハハハハ~シャオハンの批判は終わりました~

それでは、古代の九族絶滅がどのように行われたのか見てみましょう。まず、共通の祖先(つまり、小漢皮家の長兄)まで遡り、小漢皮と関係のある人物を一人ずつ数える必要があります(小漢皮は本当に詐欺です)。

実は、ヒープ上で行われるガベージコレクションもこの「九族殺し」と同じ考え方なので、JVM がどのように GC を実行するのかを詳しく分析してみましょう。

JVM の GC はプログラムによって制御されず、特定の条件が満たされたときに自動的にトリガーされます。

GC が発生すると、オブジェクトに対して、JVM は常にそれを参照する祖先を見つけることができます。最後のオブジェクトが見つかると、JVM はこのオブジェクトの祖先の一部がすでに終了していることを検出するため、それらは JVM によって強制終了されます。

なぜまだ殺されていない先祖がいるのでしょうか?なぜなら、GC から逃れたこれらの祖先は GC ルーツであり、非常に特別な外見をしているからです (外見については以下で紹介します)。

GC ルートから下方向にトレースして検索すると、参照チェーンが生成されます。オブジェクトに GC ルートが関連付けられていない場合、そのオブジェクトは容赦なく強制終了されます。 (ロープについたバッタ)

何が起こっているのかを確認するために絵を描いてみましょう。次の図に示すように、Object5、Object6、および Object7 は GC ルートに関連付けることができず、GC が発生すると破棄されます。

実際、いわゆるガベージ コレクションは GC ルートを中心に展開されますが、同時に、他の参照兄弟にはまったくこの権限がないため、GC ルートは多くのメモリ リークの原因にもなります。

GC ルートとはどのようなオブジェクトなのか疑問に思うかもしれません。

それがどんな物かは関係なく、それがどこにあるかが鍵です(よく考えてくださいね~)。

GC ルートとは何ですか?

まず、GC ルートはアクティブである必要がある参照のセットである必要があります。簡単に言えば、プログラムが直接または間接的な参照を通じてアクセスできる潜在的なオブジェクトです (まだ少しわかりにくい気がします)。

GC ルートは次のようになります。

  1. Java スレッドでは、現在呼び出されているすべてのメソッドの型パラメータ、ローカル変数、一時値などを参照します。つまり、スタック フレームに関連するさまざまな参照です。
  2. 現在ロードされているすべての Java クラス。
  3. Java クラスの参照型静的変数。
  4. ランタイム定数プール内の参照型定数。
  5. sun.jvm.hotspot.memory.Univers クラスなどの JVM 内部データ構造への参照。
  6. 同期のオブジェクトを監視します。たとえば、オブジェクトの wait() メソッドが呼び出されます。
  7. グローバル ハンドルとローカル ハンドルを含む JNI ハンドル。

上記のGCルートは、大きく分けて以下の3つのカテゴリーに分類できます。

  1. アクティブ スレッドに関連するさまざまな参照。
  2. クラスの静的変数への参照。
  3. JNI 参照。

最後に、ここではオブジェクトではなく、アクティブな参照について話していることに注意してください。オブジェクトは GC ルートとして使用できません。

GC プロセス全体は、これらの生きているオブジェクトを見つけて、残りのスペースを「役に立たない」ものとして認識することです。代わりに、すべての死んだオブジェクトを見つけて、それらが占めていたスペースを再利用します。つまり、JVM ヒープが非常に大きい場合でも、トレース GC 方式に基づくと回復速度は依然として高速です。

要約する

GC ルートは到達可能性分析方法です。参照カウントと呼ばれる方法もあります。以下に簡単に紹介させていただきます。

参照カウント方式: Java では、オブジェクトを操作する場合、まずそのオブジェクトへの参照を取得する必要があります。したがって、参照カウント方式を使用して、オブジェクトがリサイクル可能かどうかを判断できます。オブジェクトに参照が追加されると、参照カウンターが 1 増加します。オブジェクトから参照が削除されると、参照カウンタは 1 減少します。オブジェクトの参照カウントが 0 の場合、そのオブジェクトは参照されておらず、リサイクル可能であることを意味します。

利点は、ガベージコレクションがよりタイムリーかつリアルタイムになることです。オブジェクト カウンターが 0 である限り、リサイクル操作を直接実行できます。欠点は、循環参照の問題を解決できないことです。

循環参照の致命的な欠陥のため、主流の JVM では GC を実装するために参照カウントを使用しないため、参照カウントについては完全に忘れてかまいません。

<<:  SaaS セキュリティ: 現代のセキュリティ管理における新たな課題

>>:  エッジコンピューティング:その利用を増やすために何を変える必要があるか

推薦する

SEO とメール マーケティングを統合する 7 つの方法

電子メールは主にリード生成に関係しており、多くの企業にとって電子メールマーケティングは最も重要なマー...

10gbiz: US cn2 gia 専用サーバー (200M 帯域幅) は月額 97.3 ドルから、無制限トラフィック VPS は月額 3.58 ドルから

10gbizの新年大割引プロモーションがここにあります:(1)米国の無制限トラフィックVPS(Win...

エルケは消費主義を批判する

少し前のエルケ事件は世間の間で白熱した議論を引き起こし、インターネット上では「暴走消費」の波さえ引き...

#クリスマス# スピンサーバー: 月額 289 ドル、米国サンノゼ/ダラス、2*e5-2683v4/512gDDR4/8tSSD/10Gbps 帯域幅

今年のクリスマスに向けて、spinserversはダラスとサンノゼのデータセンターの専用サーバーの特...

ウェブサイトのユーザー エクスペリエンス分析: データ可視化の 6 つのステップ

[編集者注] この記事は @Baidu Business UED からのものです。現在のインターネッ...

チキン食い競争における商品配置の戦いが始まった。隠れたチキン食い王はどのブランドか?

皆さんも少し前にJD.comのDouble Elevenチャーター便の広告を見たことがあると思います...

インターネット上で広く流布されているSEO最適化の詳細に対する反論

Baidu のアルゴリズムが調整を続ける中、インターネット上では悲しみが広がっている。その後、多くの...

共同購入サイトは多数消滅、テイクアウトや予約サービスもまだ試験段階

ケータリング O2O 起業には現実的な対応が求められます。最近、私はチームと協力して長沙でオフライン...

共同購入の参加費が初めて公開:出品料は3,000元から10,000元

これまで共同購入業界では「口に出せない秘密」とされてきた参加費が、初めて公表された。記者は昨日、6月...

Host1plus が VPS 価格を最大 30% 引き下げ、ウェブサイト構築に VPS を推奨、オプションのデータセンター 5 か所

2019年7月25日より、host1plusが長年実施してきたVPS価格がついに値下げされました。今...

SDN に基づくマルチアクセス エッジ コンピューティング (MEC) について話す

データ生成とデータ処理の発展は、基盤となるインフラストラクチャ ネットワークのニーズと進化に大きな影...

photonvps - 初月50%割引/Win/alipay

PhotonVPSは2008年に設立されました。独自のコンピュータルーム、独立したサーバーブランド、...

ウェブサイト構築に関するいくつかの提案

ウェブサイト構築中に遭遇する問題は数多くあります。ここでは、ウェブサイト構築中に注意する必要があるい...

#BlackFive# メガレイヤー: 香港/フィリピン/シンガポール/アメリカ、VPS は年間 199 元から、専用サーバーは月額 299 元から

Megalayer は今年のブラックフライデー プロモーションを開始しました。香港 (中国)、マニラ...