我在win 7 64位系统上使用VS 2010,内存为8GB。我的应用程序是32位的。在VS 2010 .Net IDE中,应用程序显示为Windows任务管理器中的"MyApp.vshost.exe *32",而VS IDE本身显示为"devenv.exe *32"。
我检查了一下,发现VS 2010 IDE文件(devenv.exe)编译时使用了/LargeAddressAware标志。
然而,在调试大型模型时,IDE会出现内存不足异常。在Windows任务管理器中,"MyApp.vshost.exe *32"进程显示大约使用了1400MB的内存(而"devenv.exe *32"进程则远低于500MB)。是否可能将"MyApp.vshost.exe *32"进程设置为/LargeAddressAware以避免这种内存不足情况?如果可以,如何在IDE中完成此操作?虽然将最终应用程序二进制文件设置为/LargeAddressAware会起作用,但我仍然需要能够在IDE中调试具有这些大型模型的应用程序。我还应该注意到,我的应用程序具有深层对象层次结构和许多集合,这些集合共同需要大量内存。但是,我的问题与尝试创建需要大于2GB内存的1个大数组等无关。
我应该指出,只要VB6 IDE被设置为/LargeAddressAware,我就能在其中运行相同的应用程序并且不会遇到内存不足的情况。在VB6的情况下,IDE和正在调试的应用程序是同一个进程(而不是像VS 2010一样分成2个进程)。VB6进程可以大于3GB而不会遇到内存不足问题。
最终,我的目标是使我的应用程序完全在64位下运行以访问更多内存。我希望在这种情况下,IDE将允许调试进程超过2GB而不会崩溃(当然比当前情况下的1.4GB更多)。但是,现在,虽然我的应用程序95%是64位的,但我调用了一个旧的COM 32位DLL,因此整个应用程序被迫仍然在32位模式下运行,直到我替换该DLL。
我检查了一下,发现VS 2010 IDE文件(devenv.exe)编译时使用了/LargeAddressAware标志。
然而,在调试大型模型时,IDE会出现内存不足异常。在Windows任务管理器中,"MyApp.vshost.exe *32"进程显示大约使用了1400MB的内存(而"devenv.exe *32"进程则远低于500MB)。是否可能将"MyApp.vshost.exe *32"进程设置为/LargeAddressAware以避免这种内存不足情况?如果可以,如何在IDE中完成此操作?虽然将最终应用程序二进制文件设置为/LargeAddressAware会起作用,但我仍然需要能够在IDE中调试具有这些大型模型的应用程序。我还应该注意到,我的应用程序具有深层对象层次结构和许多集合,这些集合共同需要大量内存。但是,我的问题与尝试创建需要大于2GB内存的1个大数组等无关。
我应该指出,只要VB6 IDE被设置为/LargeAddressAware,我就能在其中运行相同的应用程序并且不会遇到内存不足的情况。在VB6的情况下,IDE和正在调试的应用程序是同一个进程(而不是像VS 2010一样分成2个进程)。VB6进程可以大于3GB而不会遇到内存不足问题。
最终,我的目标是使我的应用程序完全在64位下运行以访问更多内存。我希望在这种情况下,IDE将允许调试进程超过2GB而不会崩溃(当然比当前情况下的1.4GB更多)。但是,现在,虽然我的应用程序95%是64位的,但我调用了一个旧的COM 32位DLL,因此整个应用程序被迫仍然在32位模式下运行,直到我替换该DLL。