Wpf RadDocking 内存泄漏
Wpf RadDocking memory leak
我正在跟踪与事件处理程序相关的内存泄漏问题,同时我发现每次打开 raddoCking 然后关闭它时,我都会使用大约 500kb 的内存但未释放。
我正在使用 MVVM 模式,据我所知,它与 mvvm 库无关。
当我关闭 RadPane 时,我将它的上下文设置为空,这还不够吗?
谢谢
几点:
将 RadPane 的上下文设置为 null 是不够的。您应该取消订阅任何持久对象的任何事件订阅,并为所有一次性对象调用 Dispose。
你是如何衡量记忆力的?它不会在您关闭 RadPane 后立即释放内存。垃圾收集仅在需要时发生。如果你想测试内存使用情况,你应该在这之前调用 GC 收集和终结。
GC.Collect();
GC.WaitForPendingFinalizers();
但是,如果您想准确地跟踪内存泄漏,则需要使用适当的分析工具来显示增长的对象及其保留图表。
看看这个 一个好的内存分析器。
您需要调用 RadPane 的 RemoveFromParent() 方法才能对其进行垃圾回收。
请查看这些链接:
http://www.telerik.com/forums/radpanegroup-memory-leak
http://www.telerik.com/forums/radpane-not-garbage-collected-when-closed
我正在跟踪与事件处理程序相关的内存泄漏问题,同时我发现每次打开 raddoCking 然后关闭它时,我都会使用大约 500kb 的内存但未释放。 我正在使用 MVVM 模式,据我所知,它与 mvvm 库无关。
当我关闭 RadPane 时,我将它的上下文设置为空,这还不够吗? 谢谢
几点:
将 RadPane 的上下文设置为 null 是不够的。您应该取消订阅任何持久对象的任何事件订阅,并为所有一次性对象调用 Dispose。
你是如何衡量记忆力的?它不会在您关闭 RadPane 后立即释放内存。垃圾收集仅在需要时发生。如果你想测试内存使用情况,你应该在这之前调用 GC 收集和终结。
GC.Collect();
GC.WaitForPendingFinalizers();
但是,如果您想准确地跟踪内存泄漏,则需要使用适当的分析工具来显示增长的对象及其保留图表。
看看这个
您需要调用 RadPane 的 RemoveFromParent() 方法才能对其进行垃圾回收。
请查看这些链接:
http://www.telerik.com/forums/radpanegroup-memory-leak
http://www.telerik.com/forums/radpane-not-garbage-collected-when-closed