c # string interning

Ich versuche zu verstehen, warum es in meinem Beispiel nicht funktioniert. Das Beispiel soll zeigen, dass Beispiel 1 weniger (viel weniger Speicher) benötigt, da es nur 10 Zeichenfolgen im Speicher haben sollte. Im folgenden Code verwenden beide Beispiele jedoch ungefähr die gleiche Menge an Speicher (virtuelle Größe und Arbeitssatz).

Bitte raten Sie, warum in Beispiel 1 nicht viel weniger Speicher verwendet wird. Vielen Dank

Beispiel 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();

Beispiel 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();

Antworten auf die Frage(4)

Ihre Antwort auf die Frage