本质上,我有一个非常大的列表,其中包含相对较大的字典。
所以基本上,我有一个非常大的内存集合。
然后我手动将此集合序列化为 XML,并通过 http 发送。不用说,XML 太大了,有时太大了,我什至在尝试发送它之前就得到了 OutOfMemory 异常。
在 .NET 中,我将如何计算潜在的内存使用量。例如,在这种情况下,我必须通过一次仅处理少量 Collection 将 XML 分解成块。
如何有效地即时计算每个“块”的大小。我不想选择一个任意数字,例如“一次处理 100 个项目”,我想知道每个块应该有多大,以逐案为基础。
干杯
更新
尽管@Jacob 为这个特定问题提供了最佳解决方案,但该应用程序的概念结构本身存在缺陷。
实际上,解决方案是执行消息的一部分,以便在使用集合时计算消息的潜在大小。
然后,您一个接一个地发送每个可接受大小的单元。
但这只是一个技巧。真正的解决方案是要么找到一种不传递大消息的方法,要么完全使用完全不同的协议。
如果你想使用 SOAP,这里有一篇关于这个主题的有趣帖子,但是我决定找到一种方法来绕过发送如此多的数据。