使用x86程序集编译到x64时的内存使用情况



如果我的应用程序是64位应用程序(在64位windows服务器上),但混合了x86和x64程序集,那么。net框架的行为如何?它作为一个完整的64位应用程序运行吗?据我所知,x64和x86在内存寻址和cpu指令集上有什么不同吗?

现在的问题是,如果混合x64和x86程序集,内存寻址如何工作,我是否能够在基于x64的应用程序中使用超过2GB的ram,而不仅仅是使用x64编译的程序集?

如果问题不清楚或需要进一步的信息,请评论。

谢谢!

Windows进程可以是32位或64位的,这取决于加载的第一个程序集(可执行文件)。如果它是AnyCPU,那么它在64位系统上是64位,在32位系统上是32位(为了简单起见,我省略了偏好32位,但您可以安全地将该标志视为x86的别名,参见"Prefer 32位"的目的是什么)。

现在的问题是,如果混合x64和x86程序集,内存寻址如何工作,我是否能够在基于x64的应用程序中使用超过2GB的ram,而不仅仅是使用x64编译的程序集?

64位进程不能加载32位程序集,所以你的问题根本不适用。如果你尝试加载一个32位的程序集,你会得到一个BadImageFormatException,仅此而已。

此外,当你试图构建你的解决方案(混合AnyCPU与x86和x64),你也会得到一个特定的警告MSB3270。

最新更新