Это, вероятно, вдоль линий .NET Collections and the Large Object Heap (LOH)Большой вороха объектов с Xml документов
В .NET, я загрузке XmlDocument с строкой, которая делает ~ 200Kb текстовый документ, когда XML преобразуется в base64. Суть в том, что строка должна быть выделена для большой кучи объекта. Я знаю из чтения сравнения здесь, что XmlReader является наиболее эффективным способом чтения строки, но XmlDocument, вероятно, дает мне более прямое чтение с большей функциональностью (xpath).
Каждый узел моего XML должен быть довольно маленькой строкой, ничто не близко к заголовку большой кучи объекта. Используя Lutz .Net Reflector, похоже, что XmlDocument использует связанные узлы внутри себя.
Итак, мой вопрос: будет ли загрузка этой строки, которая сохраняет ~ 200 КБ (> 85000 байт), вызывает еще один объект для LOH при использовании XmlDocument. Мы немного обеспокоены фрагментацией кучи и причиной ошибок OOM. Или просто возникает XmlDocument (по крайней мере, для случая, о котором я спрашиваю) создает много объектов для управляемой кучи?
Строка поступает из базы данных. Мы создаем приложение вертикального рынка поверх платформы Microsoft Dynamics, поэтому использование полей данных другого типа не является для меня вариантом. –
Чтобы быть более понятным, строка поступает из веб-службы Dynamics, которая вытащила ее из базы данных. –
Если это происходит из веб-службы, вы получаете ее в HTTP-запросе? Если у вас есть контроль над этим, вы можете передать результат - если нет, вы в основном намерены иметь эту строку 200K в памяти в любом случае. –