当前位置:  开发笔记 > 编程语言 > 正文

如何创建(32位).NET应用程序以使用3 GB RAM?

如何解决《如何创建(32位).NET应用程序以使用3GBRAM?》经验,为你挑选了2个好方法。

我正在创建一个需要使用大量RAM的.NET应用程序(C#).我最近知道在32位版本的Windows XP上我只能使用2 GB,除非我使用/3Gb交换机,并IMAGE_FILE_LARGE_ADDRESS_AWARE在可执行标头中设置标志.但是因为我正在开发.NET应用程序,我想我无法直接修改可执行文件,是吗?那么,我该怎么做才能让我的应用程序使用3 GB?



1> Marc Gravell..:

.NET exe仍然是标准的PE文件; 因此您可以尝试使用editbin /LARGEADDRESSAWARE设置标志,但请注意,如果您使用的是ClickOnce(因为它维护文件的加密哈希),这将不起作用.

但是,请注意,就单个对象/数组的最大大小而言,您仍将具有相同的.NET限制.对于大量内存,x64是一个更好的主意.



2> Spence..:

/ 3GB开关在OS引导加载程序上,而不在您的应用程序上.(编辑:它也存在于本机C/C++编译器中,但不存在于C#编译器中)就您的应用而言,它将请求内存,操作系统会将其提供给您的进程.但是,在程序使用虚拟内存之前,您可以再访问1个gig(可能,您并不总是获得3gig,具体取决于您的硬件外围设备).

正如Marc Gavell向我指出的那样,您可能需要在exe上运行命令"editbin/LARGEADDRESSAWARE my.exe"作为post build选项来启用它.在这里找到了一个MS人员的参考:MS Forums

我建议你看看你的程序,看看你是否可以重新架构它以减少使用内存.也许你可以用较小的块来处理数据集,而不是试图将整个东西一次性加载到内存中?


谢谢.该应用程序是专门为消耗尽可能多的内存而构建的,以便尽可能快(对于数字运算和矩阵运算).但是,我是否从您的答案得到CLR设置了IMAGE_FILE_LARGE_ADDRESS_AWARE位?
推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有