2012-01-22 52 views
1

私はDr Googleから持っているこの簡単な質問に簡単な答えを見つけることができません。私は静的なモジュールに入れて次のシリアル化関数を持っています。多くのXMLファイルをシリアライズするために私のアプリケーションで何度も呼び出されています。これがメモリを増やす原因になりますか?この原因メモリがオーバー成長するだろうC#の静的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(); 
} 

答えて

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

おかげで、しかし、どのような「のXmlSerializerシリアライザ=新しいXmlSerializerを(t.GetType());」私は – user1034912

+0

@ user1034912の呼び出しごとに新しいインスタンスを作成しています。ガベージコレクションはそれを破棄します。メソッドだけが静的です。 – gdoron

+0

ガベージコレクタを頻繁に呼び出す必要がありますか? – user1034912

関連する問題