我有一个C#应用程序,必须与32位库链接,还需要使用尽可能多的内存(成像应用程序); 我们在XP64桌面上运行应用程序,因此我们使用WOW64,在Visual Studio for x86中定位构建(并进行editbin /largeaddressaware
后期构建).我们遇到了一些问题:
在Visual Studio内置调试器中,我们只能使用2GB的内存(〜1.5gb到应用程序,加上开销)
从命令行运行,应用程序可以看到3GB的内存,但Microsoft文档似乎说我们应该看到4GB.
任何人都可以告诉我如何获得一个WOW64 C#应用程序,以查看该平台应该能够提供的完整4gb吗?
另外,任何人都可以告诉我如何让Visual Studio(VS 2008,也称为VS90)调试器服从该/largeaddressaware
位并停止将应用程序内存限制为2gb ?
我在VS80和VS90中看到了相同的行为; .NET Framework 3.5,3.0和2.0之间也没有区别.这是一个简单的C#程序,用于说明问题; 为x86构建editbin /largeaddressaware
,然后在内置调试器中运行,而不是从命令行运行,以查看C#可用的内存差异.
namespace MemoryAllocTest { class Program { static void Main(string[] args) { const int allocSize = 1024 * 1024; ListmyMem = new List (); UInt64 totalAlloc = 0; while (true) { myMem.Add(new byte[allocSize]); totalAlloc += allocSize; Console.WriteLine("{0} allocs: {1}MB total", myMem.Count, totalAlloc / (1024 * 1024)); } } } }
Dave Ganger.. 5
任何人都可以告诉我如何让Visual Studio(VS 2008,也称为VS90)调试器服从/ largeaddressaware位并停止将应用程序内存限制为2gb?
这需要两个步骤 - 在项目属性中:
在构建事件选项卡上,设置postbuild步骤以运行editbin/largeaware $(TargetPath)
在调试选项卡上,取消选中启用Visual Studio主机进程
通过这两个步骤,您的示例程序运行到3045MB
任何人都可以告诉我如何让Visual Studio(VS 2008,也称为VS90)调试器服从/ largeaddressaware位并停止将应用程序内存限制为2gb?
这需要两个步骤 - 在项目属性中:
在构建事件选项卡上,设置postbuild步骤以运行editbin/largeaware $(TargetPath)
在调试选项卡上,取消选中启用Visual Studio主机进程
通过这两个步骤,您的示例程序运行到3045MB