在运行时出现 OutofMemoryException 并显示消息“内存不足,无法继续执行程序”

Sag*_*har 4 .net wpf exception

我在运行时收到 OutofMemoryException 并显示消息“内存不足,无法继续执行程序。”。我在程序开始时加载图像。每张图片大小为 50+ MB。如果图像大小达到 277 MB 以上,则会出现此异常。我立即加载图像,因为我必须在开始时显示它们的缩略图。

我正在考虑缓存和分页解决方案。我有可能使用更多的系统内存或其他解决方案。

谢谢

Ric*_*ard 6

\n

是否有可能使用更多的系统内存或其他解决方案。

\n
\n\n

切换到 64 位是唯一简单的选择。

\n\n

每个对象有一个底层 .NET 1GB 限制(也适用于 64 位),但这不是您的问题。要创建对象,.NET 进程中需要有足够的连续可用内存。一旦您处理了一些非常大(>250MB)的大型对象,就越来越不可能有足够的连续地址空间可用。

\n\n

选项:

\n\n
    \n
  • 使用多个进程和进程间通信\xe2\x80\x94 会带来所有额外的复杂性(尤其是在故障情况下)。
  • \n
  • 一次仅加载一张图像。
  • \n
  • 64 位。
  • \n
\n\n

另请阅读“Windows 内部原理”,了解 Windows 如何管理内存,然后了解 .NET GC 如何管理后台内存。当您推送如此多的数据时,没有什么可以替代了解正在发生的事情。(像VMMap这样的工具会有帮助,但前提是您对它的工作原理有核心了解。)

\n