パフォーマンスの問題が発生しています。潜在的な原因の 1 つは、揮発性のシングルトンを集中的に使用することです。特定のコードは次の形式です
class foo {
static volatile instance;
static object l = new object();
public static foo Instance {
if (instance == null)
lock(l) {
if (instance == null)
instance = new foo();
}
return foo();
}
}
これは 8 ウェイ ボックスで実行されており、1 秒あたり 500,000 の速度でコンテキストが切り替わっています。典型的なシステム リソースは問題ありません - 25% の CPU 使用率、25% のメモリ使用率、低 IO、ページングなしなど。
揮発性フィールドを使用すると、メモリバリアまたは何らかの種類の CPU キャッシュのリロードが誘発されますか? それとも、そのフィールドのみについて、毎回メインメモリを追いかけますか?