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システムの構築: スタンドアロンから分散クラスタまで

推薦する

ウェブサイト運営:経験豊富なデザイナーが学ぶべきフロントエンド技術

私は、HTML と CSS を知らないユーザー エクスペリエンス デザイナーは、レンガや鉄筋に触れた...

ハイブリッド クラウド戦略: 更新の時期を示す 4 つの兆候

ネットワーク遅延について不満を言う人はいますか?クラウド コンピューティングの法案は経営者に衝撃を与...

OPA を使用してマルチクラウド ポリシーとプロセスの移植性を実現する方法

OpenPolicy Agent を使用すると、開発チームはマルチクラウドおよびハイブリッド クラウ...

Baidu の新規サイトのインデックス作成に関する問題

過去 1 か月ほど、Baidu は新しいサイトの登録を減速させています。監査パラメータはより厳しくな...

太極アシスタント事件から見るモバイルアプリ市場

12月22日の夜、脱獄チームevad3rsは、待望のiOS 7用の完璧な脱獄ツールをリリースした。し...

コンテンツマーケティングの新しいパラダイムであるJiguoが、2018年のTopDigital Innovation Marketing Awardsを2つ受賞

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

統合クラウドアーキテクチャとは何か、そしてそれがなぜ重要なのか

統合クラウド アーキテクチャを詳しく検討する前に、まずそれが直面するいくつかの課題を理解する必要があ...

フロントエンドクラウドコンピューティングでサーバーレスコンピューティングを実装する方法

企業は、アプリケーション全体をクラウドに移行せずに、既存のアプリケーション用のクラウド フロントエン...

エンタープライズSEOアウトソーシングのためのアウトソーシング会社の選び方

国内の多くの企業には、SEO プロモーションを行う専門のプロモーション チームが不足しています。一方...

従来のITメディアがボトルネックに直面、垂直型IT情報サイトはどこへ向かうのか?

Computer Business Dailyが運営を停止し、公式ウェブサイトも閉鎖休暇明けで仕事に...

Green Radish アルゴリズムでは、個々のウェブマスターはどのように外部リンクを構築するのでしょうか?

外部リンク構築は、実際には中小企業や個人のウェブマスター向けの外部リンク構築に関するものです。大規模...

風と波に乗る:2020年の流行は「オンラインイベント」の幕開けとなった

2020年を振り返ると、誰にとっても忘れられない一年だったことは間違いありません。疫病という突然のブ...

ウェブマスターネットワークからの毎日のレポート: BMC モデルは疎外され、12306 は麻痺しています

1.12306 チケット予約ウェブサイトのシステムが3日間で2回麻痺した新浪科技新聞は12月26日午...

#VPS 推奨# bacloud: 15% オフ、独占カスタマイズ、強力な高性能 VPS、リトアニア\米国、Alipay/PayPal

有名なリトアニアのホスティング会社 bacloud (リトアニアに独自のデータ センターを所有) は...

SEOを成功させるにはトラフィックソースの多様化が必須

最近、SEOmoz の過去 12 か月間のトラフィックを視覚化するために、GA アカウントにいくつか...