【发布时间】:2013-07-16 08:04:42
【问题描述】:
我们的团队在做一个项目,其目的是创建一个渲染器,它将数据渲染到屏幕上。 我们曾经在具有以下规格的 HP Z600 工作站上工作: 内存:6GB 6核 处理器:Intel(R) Xeon(R) CPU X5650 @ 2.67GHz 2.66GHz 操作系统:Windows 7 32 位 NVIDIA Quadro 4000
现在我们迁移到具有以下规格的更新的 HP Z620 工作站: 内存:12GB 12芯 处理器:Intel(R) Xeon(R) CPU E5-1650 0 @ 3.20 GHz 3.20GHz 操作系统:Windows 7 sp1 64bit NVIDIA Quadro 4000
我们尝试在新站上以 32 位仿真运行我们的 C# 和 c++\cli 代码,我们得到了 Out Of Memory Exception\COMException 真的很快,而我正在查看任务管理器和 我看到应用程序的内存只有 450MB。 异常总是在同一个动作上抛出(但在代码中的不同位置):
new WritableBitmap(width, height, 96, 96, PixelFormats.Bgra32, null)
附加信息:
在旧站 (Z600) 上运行没有问题。 我们尝试在带有 Windows 7 sp1 64Bit 的 Z600 上运行它,它再次运行没有问题。 我发现的另一个问题是一个示例,它使用我们的渲染器在屏幕上渲染“.tif”文件,使用 Z600(Windows 7 32 位或 64 位)渲染后应用程序的内存为 300MB(我是否无关紧要运行应用程序的 .exe 文件或者我通过 Visual Studio 的调试器运行它),但是当我移动到 Z620(Windows 7 64 位)时,从 .exe 文件运行应用程序确实只需要 300MB,但是当我通过 Visual Studio 运行它时(我尝试了 VS 2010 和 VS 2012)内存消耗高达 1000MB(取消选中 Visual Studio 托管过程没有帮助)。
我试图检查为什么会发生这种情况,但经过两天的搜索,我没有找到答案。 有人在 Z620 上遇到过这个问题或类似问题吗? 我希望有人有答案:)
【问题讨论】:
-
使用 SysInternals 的 VMMap 实用程序查找有问题的加载地址的 DLL。当你有如此优秀的硬件可用时,解决这个问题没有什么意义,构建你的程序的 x64 版本。
标签: c# out-of-memory windows-7-x64 writeablebitmap comexception