在C#C&C的demo开发中碰到垃圾回收问题,从开始的150K一直涨到2M,手动垃圾回收也不见效。
后来想到唯一一个可能ToolTip只能设定Tip, 好像没有移除过,那会不会控件从winform上移除以后在tooptip控件上还保留引用而没有被回收呢?
把程序中断,手动执行tooltip.RemoveAll()。看看,内存释放了。
看样toopTip还不够只能。
那怎样在每个部队牺牲后去分别在toopTip上注销它呢?从文档看ToolTip没有提供Remove(Control)方法。
用Reflector查看SetToolTip(Control,string)方法发现,如果string是空toolTip会移除控件。
OK, 问题解决。下面是改进版的CCC,里面能看到每次垃圾回收后内存状况:
http://www.gotdotnet.com/Community/Workspaces/viewuploads.aspx?id=1b78f7c1-895f-49a7-8fa6-1565db16d41b
knowbug, NPC增加的太多程序会死掉
后来想到唯一一个可能ToolTip只能设定Tip, 好像没有移除过,那会不会控件从winform上移除以后在tooptip控件上还保留引用而没有被回收呢?
把程序中断,手动执行tooltip.RemoveAll()。看看,内存释放了。
看样toopTip还不够只能。
那怎样在每个部队牺牲后去分别在toopTip上注销它呢?从文档看ToolTip没有提供Remove(Control)方法。
用Reflector查看SetToolTip(Control,string)方法发现,如果string是空toolTip会移除控件。
OK, 问题解决。下面是改进版的CCC,里面能看到每次垃圾回收后内存状况:
http://www.gotdotnet.com/Community/Workspaces/viewuploads.aspx?id=1b78f7c1-895f-49a7-8fa6-1565db16d41b
knowbug, NPC增加的太多程序会死掉