我需要将大量位图加载到内存中以在 WPF 应用程序中显示(使用 .net 4.0)。我遇到麻烦的地方是当我接近 1,400MB 的内存时(我是从任务管理器的进程列表中获取的)。
无论应用程序是在内存为 4GB 还是 6GB 的机器上运行(以及其他一些我没有详细信息的配置),都会发生同样的事情。通过减少加载的图像很容易测试,当它在一台机器上运行时,它可以在所有机器上运行,但是当它在一台机器上崩溃时,它也可以在所有机器上运行。
当我减少图像数量并允许应用程序加载而不会导致内存异常时,我可以运行应用程序的多个实例(超过单个实例的 1.4GB)而不会出现问题,因此它似乎是每个实例的限制或我的每个实例错误。
我将图像加载为 BitmapImage,它们要么存储在 List<BitmapImage>
中或加载到 List<byte[]>
它们后来在一堆分层序列中使用(使用 Writeablebitmap
)
当我加载图像而不是在使用时发生错误。在可重复的情况下,我加载了 600 张 640X640 图像以及另外 200-300 张从 100X100 到 200X200 的较小图像,尽管这似乎是一个整体位数的问题。
所以我的问题是:
*在这种情况下是否有一些内置的每个进程内存限制?
*有没有更好的技术将大量图像数据加载到内存中?
谢谢, 布赖恩
最佳答案
是的,每个进程的内存分配有限制。解决方案之一是让您的二进制 LARGEADDRESSAWARE 占用更多内存。
请参阅 Out of memory? Easy ways to increase the memory available to your program ,它围绕解决方案进行了很好的讨论。
关于c# - 在单个应用程序实例中加载大量位图时 WPF 内存不足异常。有限制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3911568/