JVM からの魂を問う質問: 「あなたは一体何のゴミなのですか?」

JVM からの魂を問う質問: 「あなたは一体何のゴミなのですか?」

[[273416]]

著者: iMononoke

ブログ: https://juejin.im/user/5c629a3051882562191755d8

GCとは何ですか?

GC は自動ストレージ管理メカニズムです。占有されているメモリが不要になった場合は、解放する必要があります。このストレージ リソース管理はガベージ コレクションと呼ばれます。

普段、机を掃除したり物を整理整頓したりするのと同じように、「手放す」という概念を見たり聞いたりしたことがある人は多いでしょう。使わなくなったものは他の人に寄付したり、リサイクル品としてリサイクルしたりすることができます。多くの場合、私たちはいくつかのアイテムを保管していますが、いつ使うかを考えるだけで何年も使用していないため、実際の「記憶」を占有しています。

「汚くて散らかっている」

[[273425]]

「きれい〜」

[[273426]]


まだ「生きて」いますか?

0-1 の世界では、いわゆる「ガベージ コレクション」とは、使用できなくなったオブジェクトによって占有されているメモリ領域を再利用し、必要なオブジェクトが使用できるようにこのメモリを解放することを指します。

では、JVM ではどのように分割されるのでしょうか?あるいは、どの物をリサイクルする必要があるでしょうか?

主な質問は、あなたはまだ「生きている」のかということです。

リサイクルするには、まずリサイクル可能かどうか、つまりその物体がまだ「生きている」かどうかを判断する必要があります。

判断には主に 2 つのアルゴリズムがあります。

  • 参照カウント
  • 到達可能性解析方法。

表を作って見てください〜

参照カウント

最大の問題は、オブジェクトが相互に参照する状況を解決するのが難しいことです。

一枚の写真は千の言葉に値する。

1. 相互引用

これは、2 つのオブジェクトが相互に参照する状況です。これ以外に、これら 2 つのオブジェクトへの参照はありませんが、参照カウントが 0 ではないため、参照カウンタは GC コレクターにそれらを再利用するように通知できません。

2 循環参照

これは循環参照の例です。これらを指す外部参照はありませんが、参照カウントは 0 ではないため、リサイクルできません。

たとえば、椅子の背もたれが壊れている場合、椅子の車輪はまだ使えますが、車輪を取り外して他の用途に使用することはできません。そのため、椅子の背もたれと車輪は互いに参照し合っていますが、それ自体以外には外部からの参照はありません。

この場合、「参照カウント方式」を使用して判断すると、まだリサイクルする必要はありませんが、実際には使用されなくなります。

そのため、主流の JVM ではメモリの管理に参照カウントは使用せず、代わりに次の到達可能性分析方法を使用します。次の図はその基本的な考え方を模式的に示したものです。

  • 到達可能性分析

図からわかるように、object5、object6、object7 には GCRoots オブジェクトへの参照チェーンがないため、すべてリサイクルされます。

上記の例によれば、壊れた椅子の背もたれと無傷の車輪は両方とも椅子オブジェクト (object5) に属していますが、椅子自体は使用されていないため、それらを参照する参照チェーンは存在しません。

GCルートになり得るオブジェクト

この大きな絵は見覚えがありますか?

もう一度分類して〜

  • 初回: オブジェクトの到達可能性分析後、GCRoots との接続がないことが判明し、初めてマークおよびフィルタリングされます。
  • 2 回目: オブジェクトが finalize() メソッドをオーバーライドしていないか、finalize() メソッドが仮想マシンによって呼び出されているため、実行する必要はないと判断されます。

<<:  Meituan Dianpingの分散データアクセス層ミドルウェアMTDDLの詳細な説明

>>:  10億規模のWebシステムの構築: スタンドアロンから分散クラスタまで

推薦する

トラフィックを増やすためにさまざまな見出しを試してみましょう

タイトルは、ユーザーにクリックして閲覧してもらうための重要な要素であり、SEO において非常に重要で...

テンセントがWeChat開発者を絶望的な状況に追い込んだとき、どうやって抜け出すのでしょうか?

鉄歌のこれまでの記事は、完全に彼自身の観察に基づいている。程小勇同志は足の指で誰が書いたかを推測でき...

2022 年のクラウド コンピューティングにはどのような新しいトレンドが生まれるでしょうか?

クラウド コンピューティングは、COVID-19 パンデミックの間も企業とリモート ワーカーのつなが...

これら 5 つの大きな障害を解決することによってのみ、ハイブリッド クラウドを有効に活用できます。

[[392137]]過去数年間、企業はデータ、アプリケーション、開発作業をクラウドに移行する傾向が強...

Red Hat がクラウド、ネットワーク、Windows の自動化を新たにサポートする Ansible Engine 2.6 をリリース

オープンソース ソリューションのリーディング プロバイダーである Red Hat, Inc. (NY...

Discuz フォーラム アプリケーション ドメイン名は諸刃の剣です。Web サイト構築の初期段階では、複数のドメイン名を使用しないでください。

ご存知のとおり、Discuz x シリーズには、アプリケーション ドメイン名をバインドするという新し...

オープンソースのリスクと課題を正しく検証し、冷静にクラウドに移行するにはどうすればよいでしょうか。

[51CTO.comからのオリジナル記事] 近年、オープンソースの概念は中国のビジネス界や開発者に広...

ドラゴンボートフェスティバルのメールマーケティングに中国の要素を加える

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますドラゴンボ...

2019年の独立系貿易ウェブサイト構築のためのSEO戦略とトレンド分析がここにあります!無駄な仕事はやめましょう!

Google SEO は、販売者がウェブサイトのランキングを向上させ、より多くのトラフィックと注文を...

年間KVM-256Mメモリ/KVM/年間10ドル/その他の構成

annualkvmはshardhost傘下の新しいブランドです。設立されたばかりで、主に年間払いのK...

flaunt7: 著作権保護の苦情は無視されることを明確に記載、オランダのVPS、オランダのサーバー

flaunt7 は、オフショア仮想ホスティング、オフショア VPS、オフショア独立サーバーを提供する...

スナップショットが2度目の復元。Baiduが再びその威力を発揮するのか?

現在、中国のほとんどのウェブサイトはBaiduで自然ランキングされています。最近の不安定さにより、ウ...

セルフサービス Web サイト構築システムに参加することを選択するときに注意すべき点は何ですか?

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています多くの中小...

東京オリンピックは観客なしで開幕、IOCバッハ氏:初のクラウド放送を支えるためにアリババクラウドが活用される

東京オリンピックがもうすぐ開幕します。今年は観客がほとんどおらず、テレビやオンラインの生放送のみで行...