【发布时间】:2014-05-29 21:11:53
【问题描述】:
我正在开发一个 WPF 应用程序,我有一个方法,我们称之为 GetUIElement(),我的方法返回一个 CustomUserControl,并且我有一个 for 循环我称之为 GetUIElement,问题是当我在 for 循环中有 1000 次迭代时,我的应用程序消耗了太多内存。
PS:
- 即使我更改 GetUIElement() 签名以返回一个简单的 Button,我也可以看到内存在增长
-
在CustomUserControl的构造函数和析构函数中我放了一些调试代码来了解我的对象的生命周期,我看到它们在循环之后都被同时销毁,这解释了为什么我的应用程序消耗太多内存,它们都保存在内存中直到循环结束。 我希望我很清楚,如果您需要更多解释,请随时告诉我。 这是代码的一些部分:
foreach (var item in Data) { var element = GetUIElement(item); //... } public FrameworkElement GetUIElement() { CustomUserControl control = new CustomUserControl(); control.StartButton.Style = Application.Current.Resources["StandardButton"] as Style; return control; }
【问题讨论】:
-
显示你的代码......
-
定义太多内存?
-
@Blam,内存过多我的意思是当应用程序启动时,它会消耗例如 50 MB,并且对于循环的每次迭代,内存量都会增加(我可以看到使用 TaskManager for示例)。
-
是的,内存会增加。内存起什么作用?什么叫内存过多?
-
我有 4 GB 的 RAM,在 TaskManager 中我的应用程序消耗了 1.5 GB,我不认为这是正常行为,当我运行我的应用程序时,我无法使用其他任何东西
标签: .net wpf memory-management memory-leaks