1.2GB内存异常

Nas*_*aer 12 .net memory wpf limit

我读到了内存限制

我有一个应用程序,可以处理需要流式传输的巨大图像.就像在单帧视频处理中一样.该应用程序有大约40个插件,每个插件可以包含数据库,图像处理和WPF GUI.

该应用程序还有2个使用旧版DotNet Winforms的插件.

一切正常,除了应用程序在RAM中超过1.2GB.然后,在分配了新内存的插件中的异常位置,我收到"Out of Memory exception".

我正在编写一个编译为32位的64位系统.我不知道该怎么做以及如何搜索任何错误.

有限制还是可以抓住它们?

Han*_*ant 20

编写占用所有可用虚拟内存空间的32位程序非常困难.你的墙壁远远低于2千兆字节,你首先耗尽的是一大块虚拟内存,足以满足要求的大小.您只能通过小额分配来获得最高2GB的限制,小到足以适应漏洞.

在操纵位图的程序中,那堵墙很早就出现了.他们可以消耗大量的VM来存储位图像素,它需要是一个连续的分配.它们存储在一个array而不是一个tree.这是一个非托管的内存分配,典型的.NET内存分析器往往有点无奈向您展示问题.

关于地址空间碎片,你没有任何合理的做法,认为消耗所有可用虚拟机应该是可能的是错误的.通过editbin.exe后期构建事件中运行并使用其/LARGEADDRESSAWARE命令行选项,可以在64位操作系统上获得更多的喘息空间.这允许进程使用可用的4千兆字节的VM,这是一个特定于64位版本的Windows的选项,因为Windows不需要高2GB.当然,将平台目标更改为AnyCPU是一种快速简便的方法来获取虚拟内存.