从大型枢轴导航后清理内存。

时间:2013-07-01 14:18:08

标签: windows-phone-7 navigation mvvm-light

我有一个主要细节支点。 Pivot包含5个PivotItems,每个都有十几个项目。每个项目都有详细信息页面。

现在我注意到它非常耗费内存。所以我正在考虑减少内存使用的方法。

  • 我将PivotItems加载到IndexChanged事件(所有数据透视项都从基础数据透透类继承,Pivot调用它们的OnPivotItemActivated(),完成所有初始化)。
  • 现在我正在考虑从内存中上传所有PivotItem的内容,同时转移到详细信息页面。我怎样才能做到这一点?只需将ItemsList设置为null?
  • 即可

1 个答案:

答案 0 :(得分:0)

简短的回答是打电话

GC.Collect()

这将调用垃圾收集器并从内存中清除所有未使用的对象。这也是一个坏主意。

长答案:

.Net是一个托管内存环境。这意味着它会在需要更多时自动回收内存。 .Net通过运行垃圾收集器来回收内存。这是垃圾收集器的作用:

  1. 它会停止您应用中的每个执行线程
  2. 它会检查应用中的每个对象,以查看它是否被CPU引用或正在使用。
  3. 那些未使用的对象将从内存中删除,其余对象将获得新的内存地址,以便您的应用程序内存位于单个连续的块中。
  4. 因此,.Net会在需要时回收内存,因此您无需担心。

    如果您真的想手动执行,请在用户希望应用暂停的位置执行此操作,例如:

    • 保存数据
    • 从屏幕X移动到屏幕Y