.net - 在64位系统中,32位变量占用的空间比64位对象少?

标签 .net memory 64-bit integer 32-bit

在 64 位系统中,.NET Framework 为 Int32 分配的内存比为 Int64 分配的内存少?

最佳答案

Int32 和 Int64 在所有平台上应该消耗相同的空间(这意味着 Int32 在 x86 和 x64 上与另一个 Int32 消耗相同的空间)。在所有平台上,Int32 应该消耗与 Int64 不同的数量。

但是,Int32 和 Int64 都不是很好的例子,因为它们是结构体。 x64 和 x86 上的对象消耗的空间显着不同,因为它们基本上是指针,并且 x64 上的指针宽度是 x86 上的两倍。这适用于函数地址、跳转地址、虚函数表、调用指令等等。 x64 编译的应用程序和 x64 的 IL 应用程序 JIT 代码将比 x86 对应的代码大得多。过去,x86 代码生成更成熟,优化更积极,只是因为编译器更成熟(这也适用于 JIT 代码生成),但编译器迎头 catch ,现在 x64 优化已达到同等水平,如果不比 x86 更好的话。

关于.net - 在64位系统中,32位变量占用的空间比64位对象少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2435160/

相关文章:

android - 加载位图会占用更多位图本身的内存

c++ - 64 位 exe 在 vi​​sual studio 外崩溃但在 visual studio 内工作

.net - 术语 - 事件可以是 "thrown"吗?

c# - 存储库模式

c# - C# 是否支持函数组合?

Java 加密内存类加载器

memory - 如何在 J2ME/BlackBerry 中深度复制向量?

delphi - 如何在64位Delphi XE2中将方法转换为回调过程?

64 位 JVM 的 Java 编程

c# - 调用 javascript 函数并在 .net 代码中使用返回结果