9

テストコードを作成しました:

private void Application_Startup_1(object sender, StartupEventArgs e)
{
    ShutdownMode = System.Windows.ShutdownMode.OnExplicitShutdown;
    MainWindow window = new MainWindow();
    window.Show();
    window.Close();
    window = null;
    GC.Collect();
}

MainWindowは、Visual Studioによって自動作成されたウィンドウであり、コードを追加していません。「MainWindowwindow=new MainWindow();」という行の前に、アプリケーションは4Mのメモリを占有します。窓を開けると13Mになりました。ウィンドウを閉じてGC.Collect()を呼び出しても変更されません

これらの余分なメモリは何に使用されており、どのように解放できますか?

4

3 に答える 3

-2

https://stackoverflow.com/a/4800489/1711103の回答に基づいて、ウィンドウの親プロパティを明示的に設定する必要がある場合があります。たとえば、コンストラクターで次のように呼び出すことができます。

this.Parent = this;
于 2015-06-09T18:18:49.823 に答える
-3

.NETガベージコレクターは、参照されなくなったオブジェクトの削除を自動的に処理します。この MSDNをご覧ください。

于 2013-01-19T05:05:03.870 に答える