C# winform客户端应用,32位支持大内存设定

    32位系统每个应用进程都会有自己独立的4GB内存空间,说的是每个进程有4GB的虚拟内存空间,而默认的32位应用当使用的物理内存达到2GB的时候就会报错System.OutOfMemoryException了。

32位应用由于系统限制最高只能使用4GB内存,这是由最大寻址空间决定的,2的32次方.则地址寻址能力是从 0x00000000~0xFFFFFFFF 即为 4GB 大小的容量,实际还要区分用户区和内核预留区。

进程可用的虚拟地址范围称为该进程的“虚拟地址空间” 。 每个用户模式进程都有其各自的专用虚拟地址空间。 对于 32 位进程,虚拟地址空间通常为 2 GB,范围从 0x00000000 至 0x7FFFFFFF,

如下图所示:

我们编译程序时,可以使用IMAGE_FILE_LARGE_ADDRESS_AWARE进行设置,在64位系统下最大支持到4GB内存空间。

C# winform应用支持32位大内存的设定如下:

1. 把启动项目属性,生成标签卡,目标平台设置为Any CPU,然后把prefer 32bit勾上就默认支持大内存了 。(勾选首选32位)

如图所示,如果目标平台已经是AnyCpu,但是无法勾选首选32位的情况.

需要把目标平台改为比Framework 4.5以上就好了(实测4.0以及4.0以下,灰色无法勾选)。

勾选首选32位后,默认就编译就会支持大内存设定了,如果目标平台不是Any CPU,需要特定的x86或者x64的话,则需要使用editbin工具来修改.

下面的editbin修改方法可用于设置低版本的Framework修改(不限版本,推荐使用)。

2.使用EditBin来进行修改。

下载链接:EditBin文件,用于修改.net编译程序的大内存支持.-桌面系统文档类资源-CSDN下载editbin.exe可用于修改.net编译程序的大内存支持.但是并非是只需要单个editbin.更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/chenhui389/85703287

对于32位系统,把x86文件夹里的文件拷贝到C:\Windows\System32\ 目录下面,或者(%systemRoot%\System32\),

对于64位系统,把x86文件夹里的文件拷贝到C:\Windows\SysWOW64\目录下面,或者(%windir%\SysWOW64\), 而x64文件夹里的文件则是拷贝到System32下面

(下图为System,System32,SysWOW64目录的说明)

 

为了自动修改,也可以添加一个生成后事件命令行,在生成成功时自动执行。

editbin.exe /largeaddressaware $(TargetPath)

 入上图所示,这样设置就可以了.在编译完成后,会自动执行生成命令行.

3.用EditBin手动输入cmd命令行修改

cmd命令行操作如下:

rem 切换目录,实际目录不一样,以下载保存的路径为准

cd C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.32.31114\bin\Hostx86\x86\

rem 执行修改
editbin.exe /largeaddressaware E:\Win.exe
pause

rem 查看修改结果
dumpbin /headers E:\Win.exe
pause

执行如图:

dumpbin 的查看结果:

 提示 Application can handle large (>2GB) addresses 即为成功。

dumpbin 常用命令补充

dumpbin  /? 可以查看帮助信息.

dumpbin /headers E:\Win.exe

使用exports 可以查看导出表,如下:

dumpbin.exe /exports %systemRoot%\system32\url.dll

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值