【发布时间】:2011-01-26 23:15:24
【问题描述】:
.NET Framework 为 Int32 分配的内存少于在 64 位系统中为 Int64 分配的内存?
【问题讨论】:
标签: .net memory 64-bit integer 32-bit
.NET Framework 为 Int32 分配的内存少于在 64 位系统中为 Int64 分配的内存?
【问题讨论】:
标签: .net memory 64-bit integer 32-bit
不,它们消耗的空间量相同,因为最小的可寻址空间是 64 位。
【讨论】:
【讨论】:
Int32 和 Int64 应该在所有平台上消耗相同的空间(这意味着一个 Int32 在 x86 和 x64 上消耗的空间量与另一个 Int32 相同)。在所有平台上,Int32 的消耗量应与 Int64 不同。
但是,Int32 和 Int64 都是不好的例子,因为它们是结构体。对象在 x64 和 x86 上占用的空间明显不同,因为它们基本上是指针,而 x64 上的指针宽度是 x86 上的两倍。这适用于函数地址、跳转地址、vtables、调用指令等等。一个 x64 编译的应用程序和一个用于 x64 的 IL 应用程序 JIT 代码将明显大于其对应的 x86。过去,x86 代码生成更成熟,优化更积极,这仅仅是因为编译器更成熟(这也适用于 JIT 代码生成),但编译器赶上了,现在 x64 优化已达到同等水平,如果不比 x86 更好。
【讨论】: