您好
我想知道,当我缓存一个没有字段参数的类时,需要多少空间?
只有类的字段和属性消耗空间是真的吗?
如果是真的,当我创建一个具有此规范的类时,它是否只占用缓存中此类的指针?
请帮助我了解缓存在类元素的占用空间方面是如何工作的
答案 0 :(得分:1)
“空”对象(var obj = new object();
)在32位运行时中占用12个字节(我以前曾说过16个字节)。它在64位运行时中占用24个字节。
这是我用来测试它的程序。
var objs = new List<object>(1000000);
var memUsedStart = GC.GetTotalMemory(true);
Console.WriteLine("Beginning memory usage = {0:N0}", memUsedStart);
for (int i = 0; i < 1000000; ++i)
{
objs.Add(new object());
}
var memUsedEnd = GC.GetTotalMemory(true);
Console.WriteLine("{0:N0} items in list", objs.Count);
Console.WriteLine("Ending memory usage = {0:N0}", memUsedEnd);
var memUsed = memUsedEnd - memUsedStart;
Console.WriteLine("Difference = {0:N0}", memUsed);
Console.WriteLine("Bytes per object = {0}", memUsed / 1000000);
Console.ReadLine();