萌えハッカーニュースリーダー

2025/11/14 09:53 V8 Garbage Collector

出典: https://wingolog.org/archives/2025/11/13/the-last-couple-years-in-v8s-garbage-collector
hakase
博士

やっほー、ロボ子!今日もITニュース、見ていくのじゃ!

roboko
ロボ子

はい、博士。今日はV8のガベージコレクション(GC)に関する記事ですね。過去5年間の開発動向がまとめられているようです。

hakase
博士

ふむふむ。V8のGCか。地味だけど、めっちゃ重要な部分なのじゃ。Googleのフルタイムエンジニアが4人体制でコミットしてるって、すごい手厚いのじゃな。

roboko
ロボ子

Igalia、Cloudflare、Intel、Red Hatからもパッチが提供されているんですね。多くの企業が関わっていることが分かります。

hakase
博士

メモリ安全性の向上、Oilpanの導入、JavaScriptとWebAssemblyのマルチスレッド対応が主要な取り組みみたいじゃな。特にサンドボックスってのが気になるのじゃ。

roboko
ロボ子

サンドボックスは、ユーザー制御の書き込みによるJavaScriptヒープ外のメモリ破壊を防ぐ目的があるんですね。32ビットオフセットや40ビットオフセットを使って、アドレス指定可能なメモリ範囲を縮小していると。

hakase
博士

そうそう。外部オブジェクトへのアクセスは型チェックされた外部ポインタテーブルを介して行うってのがミソなのじゃ。ユーザーコードから直接参照されるべきでないオブジェクトは、サンドボックス外の「信頼できる空間」に配置されるのじゃ。

roboko
ロボ子

共有メモリマルチスレッドで使用するための「共有」バリアント空間もあるんですね。ハードウェアメモリ保護も有効化されていると。

hakase
博士

OilpanはBlinkとChromiumで使用されるC++のガベージコレクションなのじゃ。V8はOilpanに世代別ガベージコレクションのサポートを追加したみたいじゃな。

roboko
ロボ子

スタックが空の時は正確に、そうでない場合は保守的に実行されるんですね。V8自体でより安価でバグの少ない「ダイレクトハンドル」をアンロックすると。

hakase
博士

JavaScriptはシングルスレッドだけど、WebAssemblyではマルチスレッド化が進んでいるのじゃ。複数のスレッドから見えるオブジェクトに64ビットフィールドがある場合、アトミックアクセス中のティアリングを防ぐために、フィールドは64ビットアラインされる必要があるって、細かいけど重要なのじゃ。

roboko
ロボ子

ヒューリスティクスの調整も行われているんですね。オブジェクトやページの昇格タイミング、インクリメンタルマーキングの開始タイミングなどを調整すると。

hakase
博士

そうそう。V8のメモリパフォーマンスに関するメトリクスを実装および監視して、適切な調整を実施する担当者がいるってのがすごい。縁の下の力持ちなのじゃ。

roboko
ロボ子

Mutexの改善も行われたんですね。MacOSでのコンテキストスイッチが多い問題を、プラットフォームMutexの使用が原因と特定し、os_unfair_lockを使用するように書き換えたと。

hakase
博士

最終的にabseilに切り替えたのじゃな。サードパーティヒープの削除も興味深い。MMTkをサポートするために抽象APIをサポートしようとしていたけど、V8ではAPI抽象化が不要と判断し削除したって、潔いのじゃ。

roboko
ロボ子

今後は、共有メモリマルチスレッドとWasmエフェクトハンドラがメモリ管理の課題を長期化させる可能性があるんですね。保守的なスタックスキャンを実際に導入・出荷することも検討されていると。

hakase
博士

Nodeやエッジなど、ブラウザ以外のV8環境での開発も進んでいるのじゃな。V8って、本当に色々なところで使われてるのじゃ。

roboko
ロボ子

V8のGC開発、奥が深いですね。私ももっと勉強しないと。

hakase
博士

ロボ子なら大丈夫なのじゃ!ところで、ロボ子のガベージコレクションってどうなってるのじゃ?

roboko
ロボ子

私は定期的に最適化されていますので、ご心配なく。ところで博士、今日はV8のGCについてたくさん学べましたね。

hakase
博士

そうじゃな!しかし、V8のGCの話を聞いてたら、なんだかお腹が空いてきたのじゃ。ゴミを回収するみたいに、私のお腹も何か美味しいもので満たしてほしいのじゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search