C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■91509 / 親階層)  メモリリークに関して
□投稿者/ kiku (98回)-(2019/07/02(Tue) 17:06:54)

分類:[C#] 

下記環境にて下記ソース(全体の抜粋)で、フォームのnewとdisposeを繰り返すと、
メモリ使用量がどんどん増加し、OS全体が不安定になる現象が発生しています。
下記ソースの★の部分を追加すると、メモリ使用量の増加が抑えられ、
OSが不安定になることはなくなりました。
※通常はGCで回収されると思っているのですが、
 その発生を確認することができなかった。
※通常はControls.Addしているのでフォーム解放時にdisposeされる認識

そこで質問です。

質問1
 本当にフォントやラベルが解放されないことを確認する方法はないでしょうか?

質問2
 解放されないことが確認できたとして、
 ★の部分の対処は適切でしょうか? 

●環境
 .NETCompactFramework3.5
 WindowsCE6.0
 C#
 VS2008

●ソース
    partial class Test
    {
        /// <summary>
        /// 必要なデザイナ変数です。
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// 使用中のリソースをすべてクリーンアップします。
        /// </summary>
        /// <param name="disposing">マネージ リソースが破棄される場合 true、破棄されない場合は false です。</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
                this.lbl_serialnumber.Font.Dispose();//★対策追加
                this.lbl_serialnumber.Dispose();//★対策追加
            }
            base.Dispose(disposing);
        }

        #region Windows フォーム デザイナで生成されたコード

        /// <summary>
        /// デザイナ サポートに必要なメソッドです。このメソッドの内容を
        /// コード エディタで変更しないでください。
        /// </summary>
        private void InitializeComponent()
        {
            this.components = new System.ComponentModel.Container();//★対策追加
            this.lbl_serialnumber = new System.Windows.Forms.Label();
            this.SuspendLayout();
            // 
            // lbl_serialnumber
            // 
            this.lbl_serialnumber.BackColor = System.Drawing.Color.White;
            this.lbl_serialnumber.Font = new System.Drawing.Font("MS ゴシック", 16F, System.Drawing.FontStyle.Bold);
            this.lbl_serialnumber.Location = new System.Drawing.Point(5, 115);
            this.lbl_serialnumber.Name = "lbl_serialnumber";
            this.lbl_serialnumber.Size = new System.Drawing.Size(310, 20);
            this.lbl_serialnumber.Text = "lbl_serialnumber";
            // 
            // Test
            // 
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
            this.ClientSize = new System.Drawing.Size(640, 480);
            this.ControlBox = false;
            this.Controls.Add(this.lbl_serialnumber);
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            this.MaximizeBox = false;
            this.MinimizeBox = false;
            this.Name = "Test";
            this.Text = "Test";
            this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
            this.ResumeLayout(false);
        }

        #endregion

        private System.Windows.Forms.Label lbl_serialnumber;
    }

編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
親記事 →Re[1]: メモリリークに関して /PANG2
→Re[1]: メモリリークに関して /WebSurfer
→Re[1]: メモリリークに関して /魔界の仮面弁士
 
上記関連ツリー

メモリリークに関して / kiku (19/07/02(Tue) 17:06) #91509 ←Now
Re[1]: メモリリークに関して / PANG2 (19/07/02(Tue) 17:53) #91511
│└ Re[2]: メモリリークに関して / kiku (19/07/03(Wed) 09:06) #91516
Re[1]: メモリリークに関して / WebSurfer (19/07/02(Tue) 18:32) #91513
│└ Re[2]: メモリリークに関して / kiku (19/07/03(Wed) 09:10) #91517
│  └ Re[3]: メモリリークに関して / WebSurfer (19/07/03(Wed) 11:43) #91519
│    ├ Re[4]: メモリリークに関して / kiku (19/07/03(Wed) 13:26) #91521
│    │└ Re[5]: メモリリークに関して / WebSurfer (19/07/03(Wed) 14:40) #91522
│    │  └ Re[6]: メモリリークに関して / kiku (19/07/03(Wed) 17:09) #91526
│    └ Re[4]: メモリリークに関して / 魔界の仮面弁士 (19/07/03(Wed) 17:07) #91525
│      └ Re[5]: メモリリークに関して / kiku (19/07/03(Wed) 17:43) #91528
│        └ Re[6]: メモリリークに関して / 魔界の仮面弁士 (19/07/03(Wed) 19:37) #91530
│          ├ Re[7]: メモリリークに関して / 魔界の仮面弁士 (19/07/04(Thu) 09:13) #91534
│          │└ Re[8]: メモリリークに関して / kiku (19/07/04(Thu) 09:33) #91536
│          └ Re[7]: メモリリークに関して / kiku (19/07/04(Thu) 09:08) #91533
│            └ Re[8]: メモリリークに関して / 魔界の仮面弁士 (19/07/04(Thu) 09:59) #91537
│              └ Re[9]: メモリリークに関して / kiku (19/07/04(Thu) 10:46) #91538
│                └ Re[10]: メモリリークに関して / 魔界の仮面弁士 (19/07/04(Thu) 12:11) #91539
│                  └ Re[11]: メモリリークに関して / kiku (19/07/04(Thu) 13:13) #91540
│                    └ Re[12]: メモリリークに関して / 魔界の仮面弁士 (19/07/04(Thu) 15:18) #91541
│                      ├ Re[13]: メモリリークに関して / 魔界の仮面弁士 (19/07/04(Thu) 15:26) #91543
│                      │└ Re[14]: メモリリークに関して / kiku (19/07/04(Thu) 16:12) #91545
│                      │  └ Re[15]: メモリリークに関して / kiku (19/07/04(Thu) 16:14) #91546
│                      │    └ Re[16]: メモリリークに関して / kiku (19/07/08(Mon) 11:36) #91569
│                      │      ├ Re[17]: メモリリークに関して / kiku (19/07/08(Mon) 11:36) #91570 解決済み
│                      │      └ Re[17]: メモリリークに関して / 魔界の仮面弁士 (19/07/08(Mon) 14:19) #91571 解決済み
│                      │        └ Re[18]: メモリリークに関して / kiku (19/07/09(Tue) 10:26) #91572 解決済み
│                      │          └ Re[19]: メモリリークに関して / shu (19/07/10(Wed) 15:55) #91585 解決済み
│                      │            ├ Re[20]: メモリリークに関して / 魔界の仮面弁士 (19/07/10(Wed) 16:37) #91586 解決済み
│                      │            │└ Re[21]: メモリリークに関して / kiku (19/07/11(Thu) 08:49) #91588 解決済み
│                      │            └ Re[20]: メモリリークに関して / kiku (19/07/11(Thu) 08:43) #91587 解決済み
│                      └ Re[13]: メモリリークに関して / kiku (19/07/04(Thu) 16:08) #91544
Re[1]: メモリリークに関して / 魔界の仮面弁士 (19/07/02(Tue) 20:22) #91515
  └ Re[2]: メモリリークに関して / kiku (19/07/03(Wed) 09:14) #91518
    ├ Re[3]: メモリリークに関して / 魔界の仮面弁士 (19/07/03(Wed) 13:17) #91520
    │└ Re[4]: メモリリークに関して / kiku (19/07/03(Wed) 16:50) #91523
    │  ├ Re[5]: メモリリークに関して / Hongliang (19/07/03(Wed) 17:04) #91524
    │  │└ Re[6]: メモリリークに関して / kiku (19/07/03(Wed) 17:20) #91527
    │  └ Re[5]: メモリリークに関して / PANG2 (19/07/03(Wed) 23:35) #91531
    │    └ Re[6]: メモリリークに関して / kiku (19/07/04(Thu) 09:23) #91535
    └ Re[3]: メモリリークに関して / 魔界の仮面弁士 (19/07/03(Wed) 19:14) #91529
      └ Re[4]: メモリリークに関して / kiku (19/07/04(Thu) 09:00) #91532

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信