从网上找了个透明时钟的例子,就是有4种界面的那个(银色、黑色、红色、花瓣),想把它改造一下,改成什么样子以后再发帖。在看他的代码的时候发现一个问题,就是计时器的Tick方法:
原来的计时器Tick方法
private void timer1_Tick(object sender, EventArgs e)
{
Draw();
}
private void timer1_Tick(object sender, EventArgs e)
{
Draw();
}
Draw()是显示表盘的方法,具体代码就不贴了。我想这样会不会大量吃内存呢?让他运行几分钟,发现内已被占去几十兆,这确实很难让人接受。加上GC.Collect()试试看:
加上垃圾回收
private void timer1_Tick(object sender, EventArgs e)
{
Draw();
GC.Collect();
}
private void timer1_Tick(object sender, EventArgs e)
{
Draw();
GC.Collect();
}
运行几分钟后,占有的内存空间没有变化。
结论:虽然.NET有垃圾自动回收机制,但是最好还是手工添加,避免吃内存的情况发生。
其实微软建议不要进行强制垃圾回收(2009年3月17日补充)。
如有错误或不当之处请拍砖。