C#中的静态XML序列化程序是否会导致内存过度增长?

C#中的静态XML序列化程序是否会导致内存过度增长?,c#,.net,memory-management,methods,static,C#,.net,Memory Management,Methods,Static,我就是找不到一个简单的答案来回答这个来自谷歌博士的简单问题。我有下面的序列化函数,我把它放在一个静态模块中。我的应用程序多次调用它来序列化大量XML文件。这会导致内存过度增长吗?(忽略代码的文本写入部分) publicstaticvoidserializetoxml(字符串填充名,T) { XmlSerializer serializer=新的XmlSerializer(t.GetType()); 字符串FullName=inFilename; TextWriter TextWriter=新St

我就是找不到一个简单的答案来回答这个来自谷歌博士的简单问题。我有下面的序列化函数,我把它放在一个静态模块中。我的应用程序多次调用它来序列化大量XML文件。这会导致内存过度增长吗?(忽略代码的文本写入部分)

publicstaticvoidserializetoxml(字符串填充名,T)
{
XmlSerializer serializer=新的XmlSerializer(t.GetType());
字符串FullName=inFilename;
TextWriter TextWriter=新StreamWriter(全名);
serializer.Serialize(textWriter,t);
textWriter.Close();
Dispose();
}
这会导致内存过度增长吗

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

因此,如果您多次调用此方法,您甚至可以使用
静态
方法来减少内存使用量

虽然编写时忽略了文本写入部分,但对于非托管资源,应使用:

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();
    }
}
publicstaticvoidserializetoxml(字符串填充名,T)
{
XmlSerializer serializer=新的XmlSerializer(t.GetType());
字符串FullName=inFilename;
使用(TextWriter TextWriter=new StreamWriter(全名))
{
serializer.Serialize(textWriter,t);
textWriter.Close();
}
}
这会导致内存过度增长吗

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

因此,如果您多次调用此方法,您甚至可以使用
静态
方法来减少内存使用量

虽然编写时忽略了文本写入部分,但对于非托管资源,应使用:

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();
    }
}
publicstaticvoidserializetoxml(字符串填充名,T)
{
XmlSerializer serializer=新的XmlSerializer(t.GetType());
字符串FullName=inFilename;
使用(TextWriter TextWriter=new StreamWriter(全名))
{
serializer.Serialize(textWriter,t);
textWriter.Close();
}
}

谢谢,但是关于“XmlSerializer serializer=new XmlSerializer(t.GetType());”我正在为每个项目创建一个新实例call@user1034912. 垃圾回收将处理它,只有方法是静态的。那么您需要经常调用垃圾回收器吗?@user1034912。一切都是自动完成的,在几乎所有情况下,您都可以忽略它的存在。谢谢,但它怎么知道我仍然没有使用该内存对象呢?谢谢,但是“XmlSerializer serializer=new XmlSerializer(t.GetType());”我正在为每个对象创建一个新实例call@user1034912. 垃圾回收将处理它,只有方法是静态的。那么您需要经常调用垃圾回收器吗?@user1034912。一切都是自动完成的,在几乎所有的情况下,你都可以忽略它的存在。谢谢,但它怎么知道我仍然没有使用那个内存对象呢?