C#中的静态XML Serializer会导致内存过度增长吗?

时间:2012-01-22 00:21:51

标签: c# .net memory-management methods static

我找不到谷歌博士这个简单问题的简单答案。我有以下序列化功能,我把它放在静态模块中。我的应用程序多次调用它来序列化大量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 个答案:

答案 0 :(得分:4)

  

这会导致记忆过度增长吗?

没有。不会有成长的记忆。 static将允许您调用SerializeToXML方法,而无需创建类的新实例。没别的了。

因此,如果您多次调用此方法,则甚至会使用static方法缩小内存使用量。

虽然您写了忽略文本写入部分,但您应该将using statement用于非托管资源:

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();
    }
}