答えて
C#ガベージコレクタはDispose()メソッドを持つオブジェクトに対しては実行しないため、Dispose()メソッドを使用してメモリからリソースを解放する必要があります。
public static string XmlSerialize<T>(T data)
{
string result;
using (StringWriter stringWriter = new StringWriter())
{
XmlWriterSettings settings = new XmlWriterSettings
{
Encoding = Encoding.UTF8,
OmitXmlDeclaration = true,
};
using (XmlWriter writer = XmlWriter.Create(stringWriter, settings))
{
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
XmlSerializer serializer = XmlSerializer.FromTypes(new[] { typeof(T) })[0];
serializer.Serialize(writer, data, ns);
if (writer != null)
writer.Dispose();
}
result = stringWriter.ToString();
if (stringWriter != null)
stringWriter.Dispose();
}
return result;
}
"USING"の使用が解決しないことはありますか? – Lasoty
"using"ブロックの最後にDisposeが自動的に呼び出されます。 –
これは間違っています。スコープを離れると、使用ブロックはオブジェクトに対して 'Dispose'を呼び出します。また、例外がスローされても、一般にDisposeを呼び出すので安全です。 – TheLethalCoder
- 1. MSMQ複合オブジェクトのシリアル化/逆シリアル化
- 2. シリアル化(TextWriter、オブジェクト)とシリアル化(XmlWriter、オブジェクト)
- 3. リスト出力の場合のOpenCPUシリアル化
- 4. 複合オブジェクトの逆シリアル化C#
- 5. オブジェクトのシリアル化
- 6. オブジェクトのシリアル化
- 7. オブジェクトxmlのシリアル化/逆シリアル化
- 8. Avroシリアル化オブジェクトがシリアル化できない問題
- 9. C++オブジェクトのシリアル化
- 10. オブジェクトに逆シリアル化
- 11. Scalaオブジェクトのシリアル化
- 12. オブジェクトのシリアル化プロセス?
- 13. Javaのシリアル化オブジェクト
- 14. シリアル化とjqueryオブジェクト
- 15. Xmlシリアル化オブジェクト(HttpBrowserCapabilities)
- 16. 逆シリアル化JSONオブジェクト
- 17. データ型のシリアル化を行う必要があり、データ型をシリアル化する方法がある場合
- 18. オブジェクトをXmlDocumentにシリアル化
- 19. バリアントの値が空の場合、バリアントのシリアル化をスキップしますか? (カスタムシリアル化)
- 20. MVCアプリケーションのCookieからオブジェクトをシリアル化、逆シリアル化するC#
- 21. オブジェクトをJSONにシリアル化する - 動的プロパティのシリアル化
- 22. Javaでスカラー逆シリアル化されたオブジェクトを逆シリアル化する
- 23. JSON JAXBオブジェクト型のシリアル化
- 24. JavaオブジェクトのBlazeDsシリアル化
- 25. JACKSONのオブジェクトのシリアル化
- 26. PHPセッションのシリアル化オブジェクト
- 27. インターフェイスとオブジェクトの逆シリアル化
- 28. XML XNAオブジェクトの逆シリアル化
- 29. オブジェクトのシリアル化クエリとクラスパス
- 30. Dlib "オブジェクトのシリアル化エラー"
なぜこのメソッドにメモリリークがあるとお考えですか?どう思う? –
このメソッドを終了するときにGCで処理できないものはここには表示されません。だから、なぜメモリリークがあると思いますか? – HimBromBeere
このメソッドを使用して1つのオブジェクトを10000回シリアル化すると、プログラムによって使用されるメモリが最大100MB(10MBから)になります。 – Lasoty