SQL CE OutOfMemoryException异常使用Web服务(SQL CE OutOfM

2019-09-25 15:48发布

尝试通过网络服务来下载文件时,我们不断收到OutOfMemory异常。 我们存储的文件的字节数组数据序列化mesage对象的一部分,而原始文件的大小都〜500KB。 在消息的对象图唯一的其他东西是相关性两个String属性。

我们试图检索压缩和非压缩与同样问题上的文件。 现在我认为 ,试图反序列化消息的时候,而不是在下载流的异常被提出。

我知道这是一个模糊的问题,但做任何你有任何想法可能是什么造成的? 这里传输的数据量似乎非常小,几乎没有其他人在转让时发生的设备上。

Answer 1:

内存是Windows Mobile设备上很紧 - 这真的是痛与合作的世界。 首先,你的一个过程总内存(如果我没记错的话)32 MB。 现在,被充满不只是在代码的内存分配,而且还加载代码的DLL,EXE文件和这样的。

现在,当你下载500KB到字节数组,它不只是需要500KB。 它需要连续的内存500KB,东西这是非常不可能找到,一旦应用程序已经运行了很短的一段时间。

我的建议是直接与一个HttpRequest,而不是Web服务下载文件。 也许web服务可以传递回去,你需要或者类似的东西的URL。 但直接下载文件,您可以在块处理它 - 阅读8K,然后写8K到磁盘,然后读取另一个8K等。



Answer 2:

为了让内存不足异常的代码或者具有消耗内存,直到该设备有没有更多的,或者设备通常没有足够的内存来处理甚至500KB变化的错误。

你说“尝试下载文件”也许你保留在内存中,你会得到异常。



文章来源: SQL CE OutOfMemoryException consuming web service