【发布时间】:2012-04-22 16:47:35
【问题描述】:
我一直以为List的默认构造函数会初始化一个容量为4的list,加上第5个元素等时容量会翻倍……
在我的应用程序中,我制作了很多列表(树状结构,其中每个节点可以有很多子节点),其中一些节点不会有任何子节点,并且由于我的应用程序速度很快但也使用了太多内存,所以我决定使用可以指定容量的构造函数并将其设置为 1。
现在奇怪的是,当我以容量 1 开始时,内存使用量比我使用默认构造函数时高出大约 15%。这不可能是因为与 4 更匹配,因为加倍将是 1、2、4。那么为什么内存使用量会额外增加呢?作为一项额外的测试,我尝试从容量 4 开始。这一次,内存使用量再次比不使用指定容量时高 15%。
现在这确实不是问题,但困扰我多年的一个非常简单的数据结构有一些我还不知道的额外逻辑。有人知道 List 在这方面的内部工作原理吗?
【问题讨论】:
标签: c#-4.0