素朴な疑問

private void button1_Click(object sender, RoutedEventArgs e)
{
ChildWindow1 fm = new ChildWindow1();
fm.Closed += new EventHandler(fm_Closed);
fm.Show();
}

private void fm_Closed(object sender, EventArgs e)
{
ChildWindow fm = sender as ChildWindow;
button1.Content = fm.DialogResult.ToString();
}

こんなコードを書いて子ウィンドウの閉じたのを知りたかったんだけど
疑問は
1.子ウィンドウのオブジェクトの破棄は自動?
2・Closedイベントは-=で切り離すべき?

どうなんでしょう?