面接官はガベージコレクションアルゴリズムについて質問するのが大好きです

面接官はガベージコレクションアルゴリズムについて質問するのが大好きです

[[438235]]

この記事はWeChatの公開アカウント「Programmer Bus」から転載したもので、著者はQishiyiです。この記事の転載についてはProgrammer Bus公式アカウントまでご連絡ください。

序文

しばらく前に1次面接に合格したアバアバは、2次面接に招待されました。今回、彼女が出会った面接官は、引き続き彼女を困惑させ、GCアルゴリズムに関する質問をします。

家に帰って通知を待つ

インタビュアー: JVM ガベージ コレクションについてご存知ですか?

アバアバ:うん、少しは分かるよ。

インタビュアー: では、JVM はどのようにしてオブジェクトがガベージであるかどうかを判断するのでしょうか?

アバアバ:到達可能性解析という手法があるようですね。

アバアバ:つまり、到達可能なオブジェクトは生き物として判断され、到達不可能なオブジェクトは「ゴミ」とみなされます。

インタビュアー: うーん...あなたが知っているガベージコレクションアルゴリズムについて教えてください。

アババ アババ:

明確にマークされたアルゴリズム

マークスイープアルゴリズム

レプリケーションアルゴリズム

世代別コレクションアルゴリズム

インタビュアー:えーと...これらのアルゴリズムはご存知ですか?

アバアバ:うーん…よく分からない…

インタビュアー: はい、今日はこれで終わりです。戻って次の連絡をお待ちください。

アバアバ:わかりました。

残念ながら、面接には不合格となりました。あなたの履歴書は当社の人材プールに追加されました。次回お会いできるのを楽しみにしています...

その場でオファーを受け取る

インタビュアー: JVM ガベージ コレクションについてご存知ですか?

アバアバ:うん、少しは分かるよ。

インタビュアー: では、JVM はどのようにしてオブジェクトがガベージであるかどうかを判断するのでしょうか?

Aba Aba: 方法は 2 つあります。1 つは参照カウント方式、もう 1 つは到達可能性分析方式です。

Aba Aba: 参照カウント方式は、オブジェクトに参照カウンタを与える方法です。オブジェクトへの参照があるたびに、参照カウンタが 1 増加します。参照が切断されるたびに、参照カウンタが 1 減少します。このように、参照カウンタが 0 の場合、オブジェクトは役に立たないもの、いわゆる「ガベージ」と見なされます。ただし、この方法には大きな欠点があり、循環参照を処理できません。

Aba Aba: 循環参照のあるオブジェクトへの外部参照があります。この状況は問題ないように見えますが、メソッド領域で参照を切断すると問題が露呈します。

アバアバ: 循環参照オブジェクトの外部参照が切断されている状況。

Aba Aba: 上記の切断された参照の場合、オブジェクト A とオブジェクト B は外部参照がないため、ガベージになっていることは明らかです。ただし、相互参照 (循環参照) のため、参照カウンタの値は 1 となり、リサイクルできません。この欠点により、参照カウント方式は実際には JVM では使用されません。

Aba Aba: 到達可能性分析方法は、GC ルートのオブジェクトを下方向に検索することです。この検索されたパスは「参照チェーン」と呼ばれます。オブジェクトが GC ルートのどの参照チェーンにもリンクされていない場合、そのオブジェクトは「デッド」であると判断されます。一般に、このオブジェクトを「到達不能」と呼びます。

インタビュアー: 先ほど GC ルートについてお話がありましたが、どのオブジェクトを GC ルートとして使用できるのかご存知ですか?

Aba Aba: はい、分かりました。GC ルートとして使用できるオブジェクトは主に 4 種類あります。

  • 仮想マシンスタックで参照されるオブジェクト
  • メソッド領域内の静的属性によって参照されるオブジェクト
  • メソッド領域内の定数によって参照されるオブジェクト
  • ネイティブメソッドスタックで参照されるオブジェクト

アバアバ:下の写真を見ると彼らの関係がよく分かります。

Aba Aba: 参照チェーン上のオブジェクトのみが「生きている」と判断され、参照チェーン上にないオブジェクトは「死んでいる」と判断され、ゴミとしてリサイクルされることがわかります。

インタビュアー:いい説明ですね。ヒープ内のオブジェクトをリサイクルするだけでなく、メソッド領域のガベージもリサイクルされるのでしょうか?

Aba Aba: メソッド領域にもガベージコレクションがあり、主に廃棄された定数や役に立たないクラスをリサイクルします。

インタビュアー: うーん...あなたが知っているガベージコレクションアルゴリズムについて教えてください。

Aba Aba: ガベージ コレクション アルゴリズムには主に 4 つの種類があります。

  • 明確にマークされたアルゴリズム
  • マークスイープアルゴリズム
  • レプリケーションアルゴリズム
  • 世代別コレクションアルゴリズム

Aba Aba: マーククリアアルゴリズムは2段階に分かれています。第1段階は「マーキング」、第2段階は「クリア」です。まず、クリアするオブジェクト、つまり灰色の部分を全てマークし、その後リサイクルします。

Aba Aba: マークスイープアルゴリズムを使用してヒープ内のガベージをクリーンアップすると、多くのスペースフラグメントが生成されます。これらのスペースフラグメントにより、新しいオブジェクトにメモリを割り当てることが困難になります。それだけでなく、マークスイープアルゴリズムのマーキング段階とスイープ段階の両方での効率はそれほど高くありません。

Aba Aba: マークアンドコンパクトアルゴリズムは、過度のメモリ断片化の問題を解決するために生まれました。

Aba Aba: 効率の問題を解決するために、メモリ ブロックを 2 つの同じサイズのブロックに分割し、毎回 1 つのブロックのみを使用するというレプリケーション アルゴリズムも登場しました。メモリ ブロックが使い果たされると、このメモリ ブロック内の生き残ったオブジェクトは別のメモリ ブロックに転送され、その後、このメモリ ブロック内のすべてのオブジェクトがクリアされます。

Aba Aba: コピーアルゴリズムは実装が簡単で便利、効率的で、メモリの断片化の問題を考慮する必要がありません。ただし、メモリを元のサイズの半分に減らすコストは間違いなく非常に高くなります。

Aba Aba: さらに、新世代のオブジェクトのほとんどは 1 日で生まれて死んでしまいます。1:1 のスペース比率に従ってレプリケーション アルゴリズムを使用すると、メモリのパフォーマンスに大きな影響が出ます。

Aba Aba: 世代別アルゴリズムは、ヒープ領域を分割し、異なる領域の条件に応じて対応するガベージ コレクション アルゴリズムを適用します。

Aba Aba: 下の図は新世代を改良したものです。新世代はエデン領域と生存領域に分かれています。生存領域はさらに 2 つの領域 (s0 と s1) に分かれています。図に示すように、それらの比率は 8:1:1 です。新しいオブジェクトは、まず Eden 領域に割り当てられます。フラグメントが多すぎるため、マークスイープ アルゴリズムはここでは適用できません。オブジェクトに割り当てる連続したスペースが十分にない場合、ガベージ コレクションが引き続きトリガーされ、パフォーマンスに大きな影響を与えます。

アバアバ:従来のGCでは、GCプロセスがもたらす「STOP-THE-WORLD」を回避することは不可能であり、一般的にSTWと呼ばれています。STWはシステムのパフォーマンスに大きな影響を与えるため、STWを排除するか、STW時間を短縮するかが特に重要です。実際、世代別アルゴリズムは特定のアルゴリズムではありません。これまでのマークスイープ、マークコンパクト、コピーアルゴリズムとは異なり、世代別アルゴリズムはヒープを分割するだけで、異なる領域で異なるアルゴリズムを使用して、STW時間を各領域に細分化し、STW時間が長時間続かないようにすることで、システムパフォーマンスを向上させるという目的を達成します。

面接官: とてもわかりやすく詳しく説明していただきました。とてもよかったです。明日は仕事に来られますか?

要約する

ガベージ コレクション アルゴリズムに関しては、GC ルート、さまざまなガベージ コレクション アルゴリズム、およびそれらの長所と短所について回答する必要があります。

<<:  クラウドコンピューティング、ビッグデータ、AI の関係と違いを 1 つの記事で理解する

>>:  Metaが新しいモバイルAIジェネレーターを公開、5分でAIアプリを作成、AndroidとiOSの両方をサポート

ブログ    
ブログ    
ブログ    

推薦する

海運業界は人工知能を活用して海賊行為と戦うことができる

今日、海賊行為は国際法、世界貿易、そして船員の安全と安心に対する複雑な課題であり続けています。電子機...

ワイヤレス「心のコミュニケーション」!崔鉄軍院士は、柔軟で非侵襲的な新しい脳コンピューターインターフェースメタサーフェスの開発を主導している。

近年、コーディング メタサーフェスにより、従来の受動デバイスでは静的であったり非常に制限されていた電...

言語モデルの氷山の一角: 微調整は不要、AI21 Labs は凍結モデルの未開発の可能性を探る

現在、特定の NLP タスクのパフォーマンスを最適化するための最善のアプローチは、事前トレーニング済...

製造の自動化と効率化の新時代

18 世紀と 19 世紀の最初の産業革命は社会を完全に作り変え、物の製造方法、人々の働き方、そして生...

2020年顔認識レポート:数万社が市場に参入し、8つの主要技術と6つのトレンドがすべて1つの記事でカバーされています

[[379936]]近年、人工知能、コンピュータービジョン、ビッグデータ、クラウドコンピューティング...

物理学界に嵐を巻き起こした室温超伝導の論文は、8人の共著者によって報告された後、ネイチャー誌によって撤回された。第一著者は調査中である。

多くの紆余曲折を経て、室温超伝導に関する熱狂は2023年末にようやく終焉を迎えた。 11月7日、ネイ...

2024年のテクノロジートレンド: AIは金融サービス企業のデジタル変革の実現に役立つ

AIは銀行の顧客サービスの性質を変える銀行やその他の金融機関は、コールセンターからチャットボット、よ...

スタンフォード大学の学生が出会い系アプリをハッキング! GAN モデルを使用して男性に変装し、顔認識システムを欺く

誰かが本当にあなたの顔を真似して、顔認識システムを回避できるのです! 最近、スタンフォード大学の研究...

...

5分間の技術講演 | GPT-4——マルチモーダル大規模モデルの新機能と利点

パート01 GPT-3.5との違い1.1 GPT-4が入力できる単語数は25,000語に大幅に増加写...

ハーバード大学とMITがあるボストンは、政府が顔認識を禁止したと公式に発表した。

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

6種類の負荷分散アルゴリズムの概要

C言語を学んだ友人やIT関係の人ならアルゴリズムには詳しいと思います。したがって、分野が異なれば、ア...

大型モデルは集団的に制御不能です!南洋理工大学の新たな攻撃は主流のAIすべてに影響を与える

業界最先端の大型モデルが一斉に「脱獄」! GPT-4 だけでなく、通常はそれほど間違いを起こさない ...

ソフトウェアテストが再び進化、Testinクラウドテストリモート実機サービスには明らかな利点がある

モバイルインターネット時代の始まり以来、スマートフォンへのソフトウェアの適応は常にソフトウェア業界の...

MITのコンピューターの先駆者ジョエル・モーゼス氏が死去! 50年前にコンピューターに微積分を教えた

コンピューターの専門家がまた一人亡くなりました! 著名なコンピューター科学者で、MITのコンピュータ...