我正在编写一个应用程序,用户使用后可以“重置”并再次使用。实际使用会创建一些对象,包括控件。
我使用进程资源管理器检查内存使用情况,发现当应用程序被使用时,内存使用量会上升,但是当应用程序被“重置”时,内存使用量几乎不会下降。
因此,在“重置”时,我递归地
这是否(必然)是内存泄漏?为什么强制GC没有帮助?
编辑:
我添加了
我使用进程资源管理器检查内存使用情况,发现当应用程序被使用时,内存使用量会上升,但是当应用程序被“重置”时,内存使用量几乎不会下降。
因此,在“重置”时,我递归地
Dispose
所有的Control
,甚至加了一个GC.Collect();
。但是,Process Explorer -> (app's-) Properties -> .Net CLR Memory
仍然显示堆上有很多东西和大量的内存使用。这是否(必然)是内存泄漏?为什么强制GC没有帮助?
编辑:
我添加了
GC.Collect();
只是为了调试——确定是否存在泄漏。在GC起作用之前,我不担心“临时泄漏”,我只是想找出是否有永远不会超出范围的对象(尽管我还没有找到它们),或者这只是时间问题,内存将被回收。
GC.WaitForPendingFinalizers()
- OzrenTkalcecKrznaric