System.Collections.Generic.List <t>内存中的大小</t>

时间:2011-02-22 23:51:07

标签: .net memory-management

只是想知道是否有人试图确定内存中System.Collections.Generic.List的实际大小?

我目前正在使用System.HttpRuntime.Cache缓存一个这样的对象,这似乎运行良好,但我希望能够确定对我的服务器的实际影响。

using (System.IO.MemoryStream stream = new System.IO.MemoryStream(capacity)) 
{ 
        new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter().Serialize(stream, obj); 
        thisSerialized = stream.ToArray(); 
        return thisSerialized.Length; 
} 

这适用于其他人,但不适合我的需要。

1 个答案:

答案 0 :(得分:7)

列表的序列化大小将完全无关紧要。

List<T>会有一些开销(两个int s)和一个大小为Capacity的数组。

引用类型的数组每个元素使用IntPtr.Size(4或8)个字节的内存;值类型数组每个元素使用Marshal.SizeOf(type)个字节的内存 (数组也有一些开销)

列表中的任何引用类型(或列表中的结构)将分别使用内存。