程序频繁点击弹出详细信息的form,不一定点出多少个,所以每次都是new一个,看完了就关了,内存也就越来越大了
不是C#会自己回收吗,为什么,如何彻底释放。
------解决思路----------------------
disopose
或者用using包起来
------解决思路----------------------
你先要写一个测试,看看form实例的生存时间有多长(你所谓的“关”了之后15秒钟之后,是否还存在、还没有被GC回收)。
先把这方面的编程知识学会,在考虑你的那个问题。
------解决思路----------------------
越来越大就是没被回收,如果一直这样,只能说你虽然关了,但可能这个窗体还被其它地方调用着,导致GC无法释放
------解决思路----------------------
看完了就关了
你先确定所谓关了是close了还是hide了
------解决思路----------------------
msdn:-----Form.Close()
在以下两种情况下调用 Close 不会释放窗体:(1) 窗体是多文档界面 (MDI) 应用程序的一部分且是不可见的;(2) 您是使用 ShowDialog 显示的该窗体。在这些情况下,需要手动调用 Dispose 来将窗体的所有控件都标记为需要进行垃圾回收。
------解决思路----------------------
同样内容的窗体,名称起一样的,就不会出现多个了.
能达到....永远一个真实页面,只会对应一个窗体对象就解决你的问题了
------解决思路----------------------
如果没有动态添加的控件和非托管的对象,重复new只会在一段时间内不断增加内存,到一定量(与机器配置有关)后,就基本不再增加了,这是gc默认的回收策略导致的
具体的,你可以用Net MemoryProfiler工具扫描一下内存对象看看有没有泄漏的
------解决思路----------------------
你确定内存问题是由于form引起的而不是从数据库读取的数据没释放?
------解决思路----------------------
尝试将引用窗体的变量赋值为null。
调用GC.Collect()手动回收内存。
------解决思路----------------------
还有你打开的form有没有去监听主窗体上的事件,结果关闭的时候没有去掉监听
------解决思路----------------------
不一定 点出 多少个? 说不定 详细窗口有些操作 没有释放呢
------解决思路----------------------
窗体能占多少内存。。是数据泄露吧。
------解决思路----------------------
楼主还是要测时间长一点,也许大到一定程度就会突然变小的,可以开一个TIMER每秒开一个,开它200个再看结果.