YAMAMOTO Yuji (山本悠滋)
2025-10-19 新宿御苑.wasm
🙋♂️Quick Survey Time!
よくある質問として、どのGC を使うのが最もよいのか、というものがある。しかし、単純に答えたくなる誘惑には、抵抗しなければならない。まず第1 に、「最もよい」とはどういう意味だろう? アプリケーションのスループットを最も高くするという意味だろうか。それとも、最も停止時間が短いGC が欲しいのだろうか。空間の利用率は重要なのか? あるいは、こうした望ましい性質を組み合わせた折衷案を求めているのか? 第2 に、明白なことだが、たとえ単一の尺度を用いたとしても、アプリケーションが異なれば、GC 間の順位は違ってくる。たとえば、20 個のJava ベンチマークと6 つのGC を用いた研究の結果をFitzgerald and Tarditi[2000]が報告している。それによれば、どのGC も、少なくとも1 つのベンチマークにおいて、他のGC より15%以上遅かったという。またさらに、プログラムが利用できるヒープ空間を大きくすれば、プログラムの実行速度は速くなる傾向があるが、それだけでなく、GC 間の相対的な性能も与えられたヒープ空間の分量によって変わってくるのである。問題をさらに複雑にする点として、ヒープを大きくし過ぎると、時間的に関連の強いオブジェクトを引き離して配置してしまい、局所性が悪化してアプリケーションの実行速度が低下する可能性がある。
リチャード・ジョーンズ; アントニー・ホスキング; エリオット・モス. ガベージコレクション (p.89). 翔泳社. Kindle 版.
(太字は私が加えたもの)
リアルタイム処理とは、データや命令に対して即応性をもって行う処理です。つまり、データの入力が発生する度にその都度処理を行います。リアルタイム処理では期限がプログラムされており、その期限までに特定の処理が実行されていなければなりません。
(「📝今日話すこと」からのコピペ)