IDisposableを継承したクラスのインスタンスはDisposeしろ
前職では、徹底されていたことです。
ただ、Disposeしなかったら、具体的に何が起きるのか?
復習も兼ねて、実際に起こして見ることにしました。
単純にFormを2つ宣言し、Mainのフォームから何度もFormを呼び出しまくるということをしてみます。
#region using System; using System.Windows.Forms; #endregion namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { for (int i = 0; i < 1000; i++) { var f = new Form2(); f.Show(); f.Close(); } } } }
HandleとThreadは変化はないのですが、メモリがグングン増加していきます。
4700K -> 8788K とメモリが3000Kも増大しています。
今回は、単純な何もないフォームですが、コントロールが多かったり、フォーム内部で処理が入っていると消費メモリは増大するでしょう。