c#中字典的内存使用情况

时间:2013-12-06 17:38:08

标签: c# memory dictionary

我在c#中有一个有字典的程序,我这样定义:

Dictionary dict<Int32,Int32> = new Dictionary<Int32,Int32>();

然后我在我的词典中添加了100个条目。现在我想知道这本词典的确切内存使用情况。 请不要谈论sizeof和这样的一些方法,我想用数学方法来计算它,例如,如果有任何指针或任何应该保存的哈希键,请告诉我(实际上我不知道)知道字典工作的确切方式。)

1 个答案:

答案 0 :(得分:1)

这是该类型的内部实现细节;它没有在外部公开足够的信息来计算所有成员的大小(假设你不是对实例的大小感兴趣,而是对它拥有的对象的大小感兴趣)。

理论上,您可以使用反射(甚至是不安全的指针)来访问私有实例变量,尝试查找内部缓冲区的大小,以及它所持有的其他状态,但这需要与字典的特定实现紧密相关。它不能用新版本的框架支持该类的新实现,并且需要编写以处理对所有现有版本所做的任何更改。