Java はマルチプロセッサ マシンで GC とヒープ割り当てをどのように処理しますか?
私が行った読書では、シングル プロセッサ システムとマルチ プロセッサ システムの間で使用されるアルゴリズムに違いはないようです。GC チューニングの芸術と科学は、Java がかなり成熟しているように見えますが、一般的な JVM 実装のいずれにもこれに関連するものは見つかりません。
データ ポイントとして、.Net では、アルゴリズムが大幅に変更されます。各プロセッサに関連付けられたヒープがあり、各プロセッサがそのヒープを担当します。これは、 MSDNなどの多くの場所で文書化されています。
スケーラブルなコレクション サーバー バージョンの実行エンジン (MSCorSvr.dll) を実行しているマルチプロセッサ システムでは、マネージ ヒープは複数のセクション (CPU ごとに 1 つ) に分割されます。コレクションが開始されると、コレクターは CPU ごとに 1 つのスレッドを持ちます。すべてのスレッドが独自のセクションを同時に収集します。ワークステーション バージョンの実行エンジン (MSCorWks.dll) は、この機能をサポートしていません。
特にマルチ プロセッサ システム向けの Java GC チューニングについて提供できる洞察は、私にとっても興味深いものです。