正常情况下,一个x86的应用,最多能使用多少内存呢?

解答

x86应用程序在不同场景下,分别可支持2GB、3GB、4GB的虚拟内存寻址。默认寻址空间为:2GB。如果开启了大内存,在x64的操作系统上,最高可支持到4GB虚拟内存。在x86操作系统上,可支持3GB虚拟内存,此时系统占用1GB。

开启4G内存方法

开启4GB虚拟内存的方法(仅支持Framework4.5以上,C#适用):
1)、使用 AnyCpu ,首选 32bit。
2)、使用Visual Studio 命令行工具。命令:editbin.exe /largeaddressaware temp\Release\test.exe 。
3)、检查方法:
a)、使用批处理 dumpbin.exe /headers temp\Release\test.exe。
b)、使用C#代码

    public Characteristics CheckPE(String path)
	        {           
        	    var file = new FileInfo(path);
            	var peHeaders = new PEHeaders(file.OpenRead());
            	return peHeaders.CoffHeader.Characteristics;  //包含 largeaddressaware,表示成功了。
	        }

优点:针对x64操作系统,完美的解决了内存不足的问题,将可内存做了翻倍处理。
缺点:针对x86操作系统无效;需要Framework4.5以上版本。

C++的解决方案,请参考下图开启:

开启3GB虚拟内存方法:

命令行工具:bcdedit /set IncreaseUserVa 3072 //(3072=1024 *3=3GB)
检查是否成功:bcdedit
关闭3GB:bcdedit /deletevalue IncreaseUserVA

优点:解决应用程序内存不足问题。
缺点:操作系统可用内存降低,降低系统稳定性。
结论:非极端情况下,并不推荐开启3GB内存,对系统稳定性会有一定的影响。不适合强制给用户开启,仅适用于个人使用。

欢迎转载分享,请关注微信公众号,将同步更新博客,方便查看!

承哥技术交流小作坊


本文会经常更新,请阅读原文: https://huchengv5.gitee.io//post/C-%E5%A6%82%E4%BD%95%E5%BC%80%E5%90%AF%E5%A4%A7%E5%86%85%E5%AD%98.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名胡承(包含链接: https://huchengv5.gitee.io/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系