Может ли статический XML Serializer в C # вызвать переполнение памяти? - PullRequest
1 голос
/ 22 января 2012

Я просто не могу найти простой ответ на этот простой вопрос, который у меня есть от доктора Google.У меня есть следующая функция сериализации, которую я вставил в статический модуль.Мое приложение вызывает его много раз для сериализации большого количества XML-файлов.Это заставит память чрезмерно расти?(Игнорировать текст, написать часть кода)

public static void SerializeToXML<T>(String inFilename,T t) 
{
    XmlSerializer serializer = new XmlSerializer(t.GetType());
    string FullName = inFilename;
    TextWriter textWriter = new StreamWriter(FullName);
    serializer.Serialize(textWriter, t); 
    textWriter.Close();
    textWriter.Dispose();
}

1 Ответ

4 голосов
/ 22 января 2012

Не приведет ли это к чрезмерному увеличению памяти?

Нет. Там не будет памяти о росте. static позволит вам вызвать SerializeToXML метод без создания нового экземпляра класса. Ничего другого.

Так что, если вы вызываете этот метод много раз, вы даже сокращаете использование памяти методом static.

Хотя вы написали, чтобы игнорировать часть записи текста, вы должны использовать , используя оператор для неуправляемых ресурсов:

public static void SerializeToXML<T>(String inFilename,T t) 
{
    XmlSerializer serializer = new XmlSerializer(t.GetType());
    string FullName = inFilename;
    using (TextWriter textWriter = new StreamWriter(FullName))
    {
        serializer.Serialize(textWriter, t); 
        textWriter.Close();
    }
}
...