只是想知道是否有人试图确定内存中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;
}
这适用于其他人,但不适合我的需要。
答案 0 :(得分:7)
列表的序列化大小将完全无关紧要。
List<T>
会有一些开销(两个int
s)和一个大小为Capacity
的数组。
引用类型的数组每个元素使用IntPtr.Size
(4或8)个字节的内存;值类型数组每个元素使用Marshal.SizeOf(type)
个字节的内存
(数组也有一些开销)
列表中的任何引用类型(或列表中的结构)将分别使用内存。