内存吃掉空列表和字典内存吃掉空列表和字典的内存有多大?如:Listlist=newList();指针本身在x86和64位x64操作系统上至少占用32位,但是列表本身呢?有0条记录。编辑:因为像这里这样的一些评论是什么意思:我想知道我是否可以通过更改列表来保存一些字节,我知道它们总是空到空(假设你有一个包含一些正在使用它的列表的类,在其他情况并非如此,在这种情况下,使用像IsEmpty和null这样的布尔值而不是空列表可能会节省一些操作内存。(特别是如果你有成千上万个这样的类,每一位都很重要))由dotPeek反编译:publicclassList:IList、ICollection、IList、ICollection、IReadOnlyList、IReadOnlyCollection、IEnumerable、IEnumerable{privateT[]_items;//x86为4个字节,x64为8个字节privateint_size;//4字节privateint_version;//4字节[NonSerialized]私有对象_syncRoot;//x86为4个字节,x64为8个字节privatestaticreadonlyT[]_emptyArray;//每种类型一个privateconstint_defaultCapacity=4;//每种类型一个...}你在x86上总共有20个字节(16个用于列表成员,4个用于元数据引用开销)和32个用于x64,包括对象类型拒绝,.net中的每个对象都有它。该计算大致排除了计数。publicclassDictionary:...{privateint[]buckets;//x86为4个字节,x64为8个字节privateDictionary.Entry[]条目;//x86为4个字节,x64为8个字节privateintcount;//4字节privateintversion;//4字节privateintfreeList;//4字节privateintfreeCount;//4字节私有IEqualityComparer比较器;//x86为4个字节,x64为8个字节privateDictionary.KeyCollectionkeys;//x86为4个字节,x64为8个字节privateDictionary.ValueCollection值;//4bytesforx86,8forx64privateobject_syncRoot;//x86为4个字节,x64为8个字节privateconststringVersionName="Version";//每种类型一个privateconststringHashSizeName="HashSize";//每种类型一个privateconststringKeyValuePairsName="KeyValuePairs";//每种类型一个privateconststringComparerName="Comparer";//onepertype}x86为44,x64为72。再次粗略计算,因为需要不同对象的实例。以上就是C#学习教程的全部内容:空列表和字典需要多少内存。侵权请点击右侧联系管理员删除。如需转载请注明出处:
