我正在玩string.Intern()
来解决我的问题:一个包含大量键和少量值的字典。各种键导致相同的值(理论上),但实际上每个值都不同。我不希望这样,因为这是一个巨大的浪费。我 真的 需要做实习。我知道它将持续一个应用程序的整个生命周期。这不仅是可以接受的,甚至是可取的。
所以我尝试为此目的编写InternedDictionary
,但它似乎不起作用。为什么?在标有string.Intern(x)
符号的行中,使用*
时,内存消耗似乎相同。那怎么改进呢?
public class InternedDictionary : Dictionary<int, string>
{
new public void Add(int key, string value)
{
base.Add(key, string.Intern(value));
}
}
static void Main(string[] args)
{
int n = 1000000;
var dict = new InternedDictionary();
for (int i = 0; i < n; i++)
{
dict.Add(i, new string('x', (i % 10) * 1000));
}
GC.Collect();
Console.WriteLine("Done.");
Console.ReadLine();
}