如何将 .Net 应用配置为x64架构生成以优化性能和兼容性?
- 内容介绍
- 文章标签
- 相关推荐
本文共计580个文字,预计阅读时间需要3分钟。
在x86架构的32位应用中,理论上32位能分配4G的内存空间。但实际上,默认的.NET Framework只能创建不超过2GB的对象。在实际使用中,若对象超过1.5G,就可能触发内存溢出异常。
在x86架构下使用32位应用程序,理论上32位能够分配4G的大小空间,但实际上默认 .NET Framework 可以创建一个不超过 2 GB 的对象,在实际使用过程中可能使用到1.5G的样子就会报内存溢出异常。
刚写了一个读取数据在内存中组装xml的程序,有10多万条数据,结果程序运行一段时间后就报内存溢出。而我本机是16GB,内存消耗不到8G,我又不想修改程序。所以我就将程序生成x64,不仅成功处理而且速度提升不少。
目前只要是比较新的vs在程序生成的时候VS默认选择的是32位,所以生成的时候尽管你的PC是64位,但是程序任然以32位运行。
这样生成的程序考虑兼容性,目标平台any cpu ,默认首选32位。
我们只需要将目标平台选择x64即可。
默认情况下,在 64 位 Windows 操作系统上运行 64 位托管应用程序时,可以创建一个不超过 2 GB 的对象。 然而,在 .NET Framework 4.5 中,可以增加该限制。以为CLR也有32位和64位之分,所以 .NET Framework要求4.5+
我的程序时4.6.1,然后如果你发现数组这些对象还是不能使用超过2G,那么你可以在config里面将gcAllowVeryLargeObjects配置添加进去。
本文共计580个文字,预计阅读时间需要3分钟。
在x86架构的32位应用中,理论上32位能分配4G的内存空间。但实际上,默认的.NET Framework只能创建不超过2GB的对象。在实际使用中,若对象超过1.5G,就可能触发内存溢出异常。
在x86架构下使用32位应用程序,理论上32位能够分配4G的大小空间,但实际上默认 .NET Framework 可以创建一个不超过 2 GB 的对象,在实际使用过程中可能使用到1.5G的样子就会报内存溢出异常。
刚写了一个读取数据在内存中组装xml的程序,有10多万条数据,结果程序运行一段时间后就报内存溢出。而我本机是16GB,内存消耗不到8G,我又不想修改程序。所以我就将程序生成x64,不仅成功处理而且速度提升不少。
目前只要是比较新的vs在程序生成的时候VS默认选择的是32位,所以生成的时候尽管你的PC是64位,但是程序任然以32位运行。
这样生成的程序考虑兼容性,目标平台any cpu ,默认首选32位。
我们只需要将目标平台选择x64即可。
默认情况下,在 64 位 Windows 操作系统上运行 64 位托管应用程序时,可以创建一个不超过 2 GB 的对象。 然而,在 .NET Framework 4.5 中,可以增加该限制。以为CLR也有32位和64位之分,所以 .NET Framework要求4.5+
我的程序时4.6.1,然后如果你发现数组这些对象还是不能使用超过2G,那么你可以在config里面将gcAllowVeryLargeObjects配置添加进去。

