【发布时间】:2011-04-22 22:30:00
【问题描述】:
我们正在开发一个大型 .NET Windows 窗体应用程序。尽管我们正在处理表单,但我们仍面临内存泄漏/使用问题。
场景是这样的:
- 我们的应用程序正在使用 60 KB 内存,并在网格中显示记录列表。
- 当用户单击记录时,它会打开一个表单
myform.showDialog,显示详细信息。内存跃升从 60 KB 到 105 MB。 - 现在我们关闭表单
myform以返回网格,然后dispose该表单并将其设置为null。内存保持为 105 MB。 - 现在如果我们再次执行第 2 步,它会从 105 MB 跳到 150 MB 等等。
关闭myForm时如何释放内存?
我们已经尝试过GC.Collect()等,但没有任何结果。
【问题讨论】:
-
“等等”走多远?老实说,您在这里谈论的不是大量内存,GC 甚至可能不会尝试在这些级别释放内存。
-
您确定这是泄漏吗?在发布模式下编译时会发生这种情况吗?认为 .Net 不会像在 C++ 中那样在释放表单的同时释放内存,它会保留内存以供将来使用。尝试在更长的会话中使用应用程序,并尝试最小化窗口(这有时会以某种方式强制释放)。
-
我认为您的意思是“60M 到 105M”而不是“60K 到 105K”。 150K 不算什么。
-
这不是泄漏,只是内存使用情况。
-
我有同样的问题,内存使用量可以增长到 1.5 Gb (Gigabyte)
标签: c# .net winforms memory-leaks c#-3.0