序列化复杂对象时的OutofMemory异常

时间:2010-09-28 10:24:27

标签: sql-server serialization c#-3.0

我有一个Web应用程序,它将一个非常复杂的对象序列化,该对象具有大约500个子对象到SQL 2008数据库。问题是当对象非常大(超过500个子对象)时,它会生成一个outofmemory异常,我们需要重新启动iis。

我在.NET中使用二进制序列化程序将对象序列化为内存流。我也试过使用文件流,但它也失败了。

当序列化为文件大约15MB且Web服务器是Windows 2008 IIS 7 32位时,对象的总大小。

我不需要对这个对象运行任何查询。只需要将它存储在某处然后检索。

所以请在这里指出正确的方向......

1 个答案:

答案 0 :(得分:0)

如果没有访问您的系统,很难回答这类问题,有太多未知数。一个15MB的文件流并不小,但它肯定不是很大,你的系统应该能够轻松处理它。

可能是您的Web服务器只需要更多RAM。你有没有想过这台机器?它甚至可能不是您的序列化是主要原因,也许您在该服务器上发生的事情太多了。

您可能还想创建自己的自定义序列化程序,而不是使用框架内置的序列化程序。或者您可能想要调查现有序列化程序的各种选择/退出行为,并查看是否需要将所有内容保存在对象中。