我一直认为 List 的默认构造函数会初始化一个容量为 4 的列表,并且在添加第 5 个元素时容量会翻倍,等等......
在我的应用程序中,我制作了很多列表(树状结构,其中每个节点可以有很多子节点),其中一些节点没有任何子节点,并且由于我的应用程序速度很快但也使用了一些内存,所以我决定使用我可以指定容量并将其设置为 1 的构造函数。
现在奇怪的是,当我以容量 1 开始时,内存使用量比我使用默认构造函数时高出大约 15%。这不可能是因为 4 更适合,因为加倍是 1,2,4。那么为什么会额外增加内存使用量呢?作为一项额外的测试,我尝试从容量 4 开始。这一次,内存使用量再次比不使用指定容量时高 15%。
现在这真的不是问题,但困扰我多年的一个非常简单的数据结构有一些我还不知道的额外逻辑。有没有人知道 List 在这方面的内部运作?