В этой инструкции имеется возможная утечка памяти для очень большой строки (tempText
может вырасти до 10 мб).Утечка памяти при небольшой операции
string strXML = new string(tempText.Where(ch => XmlConvert.IsXmlChar(ch)).ToArray());
Память, выделенная для strXML
не получает выпустили даже после выхода из функции. И я должен вызвать эту функцию несколько раз. Любое возможное решение без этой строки в качестве переменной класса? Я не очень хорошо знаком с управлением памятью C#, может кто-то пролить свет на эту проблему?
Нет ничего особенного в том, как вы создаете 'strXML'. Как вы используете 'strXML' после инициализации? Вы добавляете его в коллекцию? Вы используете его в lambdas, где 'strXML' может быть захвачен? – dasblinkenlight
Использовали ли вы профилировщик памяти, чтобы убедиться, что на самом деле это память, выделенная для 'strXML', которая сохраняется? Является ли еще одна ссылка на строку, которая сохраняется где-нибудь?). –
@ dasblinkenlight позже я использую его с StringReader, который внутри используется() Vlad - наши пользователи запускают наш продукт утром и продолжают работать до конца дня. Это создает проблему, через 4-5 часов. – rplusg