【问题标题】:.NET Object size.NET 对象大小
【发布时间】:2010-10-12 12:31:55
【问题描述】:

.net 中堆分配对象的大小是多少,包括管理开销?我假设对象是沿 4 字节边界分配的,还是使用了不同的方法?

【问题讨论】:

  • Jon B:这个问题是关于 .NET 中任何对象的大小,而这个问题是关于 .NET Object 类实例的大小。一个完全不同的问题。

标签: c# .net memory memory-management


【解决方案1】:

x86 上的 4 字节边界。 x64 上可能有 8 字节边界。

x86 上有 8 字节的开销,用于类型引用和同步块。在 x64 上发现 12 或 16 字节我不会感到惊讶。

出于某种原因,在 x86 上,只有 System.Object 的实例似乎占用 12 个字节,使得 12 个字节成为可能的绝对最小大小 - 但具有 int 的类 占用 12 个字节.我不知道为什么会这样。

【讨论】:

  • 你应该不能很好地回答高低级别的问题。我正在使用一个新标签进行更新:stump-the-skeet。在这种情况下,这个问题就是 stump-the-skeet:fail。
  • 那个标签没有持续多久。 ;-)
  • 想通了。以为我会尝试。 :)
【解决方案2】:

取决于机器,在 32 位机器上它通常是 4 字节。但是,在 64 位盒子上,它是 8 字节,以此类推。

【讨论】:

  • 我认为您是在谈论 reference 的大小而不是对象开销本身。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-09
  • 2012-04-17
  • 1970-01-01
  • 2010-12-05
  • 1970-01-01
  • 2018-01-29
相关资源
最近更新 更多