LargeAddressAware

.Net客户端程序开发时存在x86(32 位)和 x64(64 位)是两种不同的目标平台架构

最大区别

内存

x86(32 位):
进程的虚拟地址空间最大为 4GB(2³² = 4,294,967,296 字节)。
其中,默认情况下用户模式可用空间仅约 2GB(其余 2GB 分配给内核模式)。
即使通过 LargeAddressAware 标志优化,在 64 位系统上最多也只能使用 4GB,在 32 位系统上配合特殊配置可达到 3GB。
对于需要处理大型数据集(如 GB 级内存缓存、高分辨率图像)的程序,x86 容易出现 “内存不足” 错误。
x64(64 位):
理论上支持的虚拟地址空间高达 16EB(2⁶⁴),但实际受限于操作系统和硬件,通常可支持 数十 GB 甚至 TB 级内存(例如 Windows 10/11 专业版支持 up to 2TB 内存)。
完全没有 x86 的 4GB 上限限制,适合内存密集型应用(如大数据处理、科学计算、复杂 3D 渲染)

问题

如何在x86平台下突破内存限制

回答

LargeAddressAware

使用办法
nuget:dotnetCampus.LargeAddressAware
.csproj 文件增加

    <PropertyGroup>
    <EnableLargeAddressAware>true</EnableLargeAddressAware>
  </PropertyGroup>
posted @ 2025-08-01 11:50  [在河之洲]  阅读(166)  评论(0)    收藏  举报