C# list存储的数据格式以及默认初始化空间,内存回收分析






上面的代码是从System.Collections.Generic下扒出来的,我们看第一个图片中的代码 private const int _defaultCapacity = 4;这里我们可以看到,当我们不设置list的初始大小时默认会设置为4,并且可以看出来,list内部是以数组的方式进行存储的,

我们来看第二张图片的算法,这个就是list扩容的算法,当数据长度大于初始化长度时,list会每次将数组长度*2,就是扩大到原来的两倍,并且在扩容后会将原始的数据复制到新的内存空间中。

第三张图的算法从名字我们就可以看出来他的作用是收缩存储空间的,当空余的存储空间超过10%时,系统会将容量收缩到原来的0.9倍

其他的因为时间关系就暂时不说了,后续会详细补充,有疑问的可以在线交流,有错误的地方还望指教。

这里是 ArrayList源码剖析,地址:

http://blog.csdn.net/exiaojiu/article/details/51190926?ref=myread,感谢作者的贡献,希望会帮到大家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值