【发布时间】:2010-10-12 12:31:55
【问题描述】:
.net 中堆分配对象的大小是多少,包括管理开销?我假设对象是沿 4 字节边界分配的,还是使用了不同的方法?
【问题讨论】:
-
Jon B:这个问题是关于 .NET 中任何对象的大小,而这个问题是关于 .NET Object 类实例的大小。一个完全不同的问题。
标签: c# .net memory memory-management
.net 中堆分配对象的大小是多少,包括管理开销?我假设对象是沿 4 字节边界分配的,还是使用了不同的方法?
【问题讨论】:
标签: c# .net memory memory-management
x86 上的 4 字节边界。 x64 上可能有 8 字节边界。
x86 上有 8 字节的开销,用于类型引用和同步块。在 x64 上发现 12 或 16 字节我不会感到惊讶。
出于某种原因,在 x86 上,只有 System.Object 的实例似乎占用 12 个字节,使得 12 个字节成为可能的绝对最小大小 - 但具有 int 的类 也 占用 12 个字节.我不知道为什么会这样。
【讨论】:
取决于机器,在 32 位机器上它通常是 4 字节。但是,在 64 位盒子上,它是 8 字节,以此类推。
【讨论】: