none
朋友们,我简单写了个东西,运行的时候,内存一直上涨。 RRS feed

  • 问题

  • 主要是 有一个Timer 里面 是

     

                DateTime dtm = DateTime.Now;
                lblTime.Text = dtm.Year + "年 " + dtm.Month + "月 " + dtm.Day + "日 " + dtm.ToLongTimeString();
               
               
                if (dtm.Hour == 22 && dtm.Minute == 0 && dtm.Second >=0 &&dtm.Second<=10 && !hassendtoday)
                {
                    hassendtoday = true;
                  执行一函数
                }

    它是 8K 8K地增加占用内存,不明白,不是每次只多生成一个datetime么,怎么它会占8K啊

     

    然后 我把datetime dtm 的申明放到timer tick 外,可是,还是这样8K一增加 


    C#初学者,所以提的问题对各位前辈朋友来说可能很简单,也可能问法也不对,非常期待大家的回答……
    2011年8月4日 12:02

答案

全部回复

  • 那如果使用GC.Collect()呢?

    http://msdn.microsoft.com/zh-cn/library/xe0c2357.aspx


    Shadowと愉快なコード達
    Please correct me if my concept is wrong
    2011年8月4日 13:24
  • 用stringbuilder

    每次+操作都会返回一个临时字符串。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2011年8月4日 20:23
    版主
  • 您好

    請測試看看以下情況,內存是否還會增加

    1. 把 lblTime.Text = dtm.Year + "年 " + dtm.Month + "月 " + dtm.Day + "日 " + dtm.ToLongTimeString(); 這行程式先註解

    2. 把 执行一函数 的部分註解調


    歡迎參觀我的Blog.NET菜鳥自救會

    2011年8月5日 1:16
  • 那如果使用GC.Collect()呢?

    http://msdn.microsoft.com/zh-cn/library/xe0c2357.aspx


    Shadowと愉快なコード達
    Please correct me if my concept is wrong
    谢谢,是不是我不用这个,内存也会自动回收么?
    C#初学者,所以提的问题对各位前辈朋友来说可能很简单,也可能问法也不对,非常期待大家的回答……
    2011年8月5日 1:24
  • 用stringbuilder

    每次+操作都会返回一个临时字符串。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP

    谢谢,请问临时的回自动回收么?
    C#初学者,所以提的问题对各位前辈朋友来说可能很简单,也可能问法也不对,非常期待大家的回答……
    2011年8月5日 1:24
  • 您好

    請測試看看以下情況,內存是否還會增加

    1. 把 lblTime.Text = dtm.Year + "年 " + dtm.Month + "月 " + dtm.Day + "日 " + dtm.ToLongTimeString(); 這行程式先註解

    2. 把 执行一函数 的部分註解調


    歡迎參觀我的Blog.NET菜鳥自救會


    谢谢,我昨天试了下,这样的话,不往上长了

    我又试了下简单的

    private void button1_Click(object sender, EventArgs e)
            {
                timer1.Enabled = true;
            }
            private DateTime dtm;
            private void timer1_Tick(object sender, EventArgs e)
            {
               
                dtm = DateTime.Now;
                label1.Text = dtm.ToLongTimeString();
            }

    当timer.enable的时候 内存不长

    注释掉label1.Text = dtm.ToLongTimeString(); 内存也不长

    就是 说 label1.Text = dtm.ToLongTimeString(); 这个也会让内存上长? 是不是产生了垃圾?我需要管它么?


    C#初学者,所以提的问题对各位前辈朋友来说可能很简单,也可能问法也不对,非常期待大家的回答……
    2011年8月5日 1:33
  • 您好

    內存增長可能是由於您對 label1 做操作所造成,建議讓程式自動做釋放就好,不需要特別做 GC.Collect();


    歡迎參觀我的Blog.NET菜鳥自救會
    2011年8月5日 2:14
  • dear

    1.在.NET托管下没事的话千万不要用GC.Collection

    2.操作控件本来就会耗掉内存,你可以把string的写法换成StringBuilder再观察看看

    http://www.dotblogs.com.tw/yc421206/archive/2010/10/26/18575.aspx


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2011年8月5日 2:28
  • 您好

    內存增長可能是由於您對 label1 做操作所造成,建議讓程式自動做釋放就好,不需要特別做 GC.Collect();


    歡迎參觀我的Blog.NET菜鳥自救會

    谢谢 :) 我那个小测试程序开了三个小时了,高起来,过一会儿去看,已经降下去了,又高起来,又降大概。谢谢 :)
    C#初学者,所以提的问题对各位前辈朋友来说可能很简单,也可能问法也不对,非常期待大家的回答……
    2011年8月5日 3:28
  • dear

    1.在.NET托管下没事的话千万不要用GC.Collection

    2.操作控件本来就会耗掉内存,你可以把string的写法换成StringBuilder再观察看看

    http://www.dotblogs.com.tw/yc421206/archive/2010/10/26/18575.aspx


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/

    谢谢小章哥,我试试
    C#初学者,所以提的问题对各位前辈朋友来说可能很简单,也可能问法也不对,非常期待大家的回答……
    2011年8月5日 3:28