为什么使用 ObservableCollection.Clear() 但 GC 不起作用

发布于 2024-12-12 00:03:52 字数 128 浏览 0 评论 0原文

当我使用 Clear() 方法时,我有一个 ObservableCollection 绑定到数据透视表中的列表框。看来GC没有回收。因此,当我不断清除 ObservableCollection 时,内存不断增加。有谁知道为什么会发生这种情况?

I have a ObservableCollection which binding to a listbox in the Pivot, when i used the method Clear(). It seems to the GC didn't recycle. So when i keep Clearing the ObservableCollection, the memory keep incresing. Any one know why this happened?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

北笙凉宸 2024-12-19 00:03:53

WP7 上的垃圾收集行为与其他 .Net 垃圾收集器不同。它被编程为仅在内存使用量超过特定级别时运行。

另外,请记住,Mango 中的垃圾收集器已发生变化:在最初的 WP7 中,垃圾收集器是非分代的,而在 Mango 中,它现在是分代的。

如果您迫切需要清除内存,请使用 GC.Collect() (Windows Phone 7)
或 GC.Collect(3)(仅限 Windows Phone 7 Mango)

将是您所需要的。执行此操作将暂停应用程序,因此在用户接受暂停的情况下执行此操作是有意义的 - 可能在您更改屏幕或保存数据之后是执行此操作的好时机。

Garbage collection on WP7 behaves differently from other .Net garbage collectors. It's programmed only to run when memory usage exceeds a specific level.

Also, keep in mind that the garbage collector has changed in Mango: In the original WP7 the garbage collector was non-generational, in Mango it is now generational.

If you're desperate to clear down memory then GC.Collect() (Windows Phone 7)
or GC.Collect(3) (Windows Phone 7 Mango only)

will be what you're after. Doing this will pause the application so it makes sense to do this where the user will accept a pause - probably just after you change screens or save data are good times to do this.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文