尝试通过Web服务下载文档时,我们不断收到OutOfMemory异常.我们将文档字节数组数据存储为序列化消息对象的一部分,原始文档的大小均为~500kb.消息对象图中唯一的另一个东西是两个用于关联的字符串属性.
我们已经尝试检索压缩和未压缩的文档具有相同的问题.现在我相信在尝试反序列化消息而不是在下载流时引发了异常.
我知道这是一个模糊的问题,但是你们中的任何人都知道是什么原因造成的吗?此处传输的数据量似乎非常小,并且在传输时设备上几乎没有其他事情发生.
Windows Mobile设备上的内存非常紧张 - 这真的是一个痛苦的世界.首先,一个进程的总内存是(如果我没记错的话)32 MB.现在不仅填充了代码内存分配,而且填充了DLL,EXE等代码.
现在,当您将500KB下载到字节数组中时,它不仅需要500KB.它需要500KB的CONTIGUOUS MEMORY,一旦应用程序运行一段时间,它就不太可能找到.
我的建议是直接使用HttpRequest而不是Web服务下载文件.也许Web服务可以传回您需要的URL或类似的东西.但是直接下载文件,你可以用块处理它 - 读取8K,然后将8K写入磁盘,然后读取另外8K等.