.NET在32位或64位系统中有什么区别?

Jad*_*ias 4 .net 64-bit operating-system 32-bit

想象一下纯粹的.NET应用程序,它不使用COM组件也不使用PInvoke.目标系统是32位还是64位是否重要?

Ree*_*sey 6

如果应用程序的目标是AnyCPU,则运行时行为将不同,特别是内存使用和限制.

在64位上,不会有相同的32位内存限制(理论上2GB最大内存,但实际上是1.2-1.6).但是,所有对象引用都是两倍大,因此64位系统将使用更多内存.

此外,64位系统通常还有额外的寄存器等,因此有时性能会略有提高.但这是特定于平台的.

如果应用程序的目标是x86,它将在WoW64下运行,其行为几乎与它在32位系统中的行为方式相同.


Chr*_*Rea 5

假设没有 COM 组件、P/Invoke 等的安全代码应该不存在语义差异,但性能可能会受到影响。考虑:64 位下内存更多,但引用更大。赢得一些,失去一些。

无论如何,这里有一些有用的参考:

“[...] 考虑一个 100% 类型安全代码的 .NET 应用程序。在这种情况下,可以将在 32 位计算机上运行的 .NET 可执行文件移动到 64 位系统,然后让它成功运行。为什么会这样?由于程序集是 100% 类型安全的,我们知道不存在对本机代码或 COM 对象的依赖关系,并且不存在“不安全”代码,这意味着应用程序完全在控制下运行CLR 保证,虽然作为即时 (JIT) 编译结果生成的二进制代码在 32 位和 64 位之间会有所不同,但执行的代码在语义上是相同的.[...]”