Эй, ребята, вот проблема,
По сути, у меня есть очень большой список, содержащий в свою очередь относительно большие словари
Итак, у меня очень большая коллекция памяти.
Затем я вручную сериализовал эту коллекцию в XML и отправил ее по http. Излишне говорить, что XML слишком большой, иногда такой большой, что я получаю исключение OutOfMemory, даже не пытаясь отправить его.
В .NET, как бы я мог рассчитать потенциальное использование памяти. Например, в этом случае мне нужно разбить XML на куски, обрабатывая только небольшие объемы коллекции в время.
Как эффективно рассчитать размер каждого "чанка" на лету. Я не хочу выбирать произвольное число, например "обрабатывать 100 элементов одновременно", Я хочу приблизительно узнать, насколько большим должен быть каждый блок для каждого конкретного случая.
ура
UPDATE
Хотя @Jacob предоставил лучшее решение для этой конкретной проблемы, концептуальная структура приложения сама по себе несовершенна.
Действительно, решение состоит в том, чтобы выполнить часть вашего сообщения, чтобы вычислить, насколько большим может быть сообщение при работе с коллекцией.
Затем вы отправляете каждую единицу приемлемого размера, одну за другой.
Но это всего лишь взлом. Реальное решение - либо найти способ не передавать большие сообщения, либо использовать совершенно другой протокол.
Здесь есть интересный пост на эту тему , хотя, если вы хотите использовать SOAP, я решил найти способ отправить столько данных.