私は文字列のインターンを理解しようとしていますが、私の例ではなぜうまくいかないようです。この例のポイントは、例1ではメモリに10個の文字列しかないため、使用するメモリが少ない(メモリがはるかに少ない)ことを示しています。ただし、以下のコードでは、両方の例でほぼ同じ量のメモリ(仮想サイズとワーキングセット)を使用しています。
例1があまりメモリを使用していない理由を教えてください。ありがとう
例1:
IList<string> list = new List<string>(10000);
for (int i = 0; i < 10000; i++)
{
for (int k = 0; k < 10; k++)
{
list.Add(string.Intern(k.ToString()));
}
}
Console.WriteLine("intern Done");
Console.ReadLine();
例2:
IList<string> list = new List<string>(10000);
for (int i = 0; i < 10000; i++)
{
for (int k = 0; k < 10; k++)
{
list.Add(k.ToString());
}
}
Console.WriteLine("intern Done");
Console.ReadLine();