Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ionic framework 离子2/3-垃圾收集_Ionic Framework_Ionic2_Garbage Collection_Ionic3 - Fatal编程技术网

Ionic framework 离子2/3-垃圾收集

Ionic framework 离子2/3-垃圾收集,ionic-framework,ionic2,garbage-collection,ionic3,Ionic Framework,Ionic2,Garbage Collection,Ionic3,我试图更好地理解ionic2和ionic3 在爱奥尼亚,垃圾收集是如何工作的 缓存什么以及何时缓存 我们如何清除这个缓存 我们如何为G.C.设置元素 我们甚至需要为G.C设置元素吗 我们是否需要为G.C.设置页面 如图()所示: 当转到新页时,一些内存会被G.C.d。但是,内存仍然明显高于播放任何视频之前的内存。好的,我想试试这个: Ionic本身与GC没有太多关系,您身后没有清理任务的计划运行。爱奥尼亚(或者更具体地说,爱奥尼亚背后的开发团队)必须做的唯一一件事就是设计和实现他们的UI

我试图更好地理解
ionic2
ionic3

在爱奥尼亚,垃圾收集是如何工作的

  • 缓存什么以及何时缓存
  • 我们如何清除这个缓存
  • 我们如何为G.C.设置元素
  • 我们甚至需要为G.C设置元素吗
  • 我们是否需要为G.C.设置页面
如图()所示:


当转到新页时,一些内存会被G.C.d。但是,内存仍然明显高于播放任何视频之前的内存。

好的,我想试试这个:

  • Ionic本身与GC没有太多关系,您身后没有清理任务的计划运行。爱奥尼亚(或者更具体地说,爱奥尼亚背后的开发团队)必须做的唯一一件事就是设计和实现他们的UI组件,这样它们就不会占用太多内存,也不会占用未使用的内存。特别是在虚拟滚动中,出现了内存泄漏等问题
  • 让我们更深入一层:角度!和爱奥尼亚一样。Angular的开发人员负责他们的框架使用了多少内存。但是Angular提供了一种非常有用的方法
    ngondestory()
    。作为一名应用程序开发人员,为什么这种方法对您很重要?因为它给了你清理自己的机会。在组件销毁之前调用此方法,这意味着什么?您不再需要分配的对象、数组、视频元素(设置
    src='
    ,然后调用
    load()
    )等,您可以释放内存。并且是关于如何释放内存的好读物。但是,对于
    onDestory()
    而言,您只需释放未被automic GC清理的内存(订阅、媒体元素等)。这让我们进入了下一个阶段:
  • Javascript/浏览器:这是“真正的”GC发生的地方。Javascript使用一个标记和清除垃圾收集器(所有现代浏览器都附带一个),您可以了解它。它时不时地运行,并释放每个无法访问/不再引用的对象,以便使用
    delete
    关键字显式标记一个对象以供GC使用。下图显示了标记和扫描过程:

我强烈建议,这张图片非常详细地解释了javascript内存管理的工作原理 推荐阅读

  • 当然,您总是使用Java/Obj-C的本机GC来清理应用程序的本机部分

回答得好!我想特别在iOS上补充这一点,因为操作系统管理RAM内存的使用,有时一些资源在不再使用时不会被释放(因为操作系统知道仍然有大量内存可用,并且不知道将来是否不再使用该资源)。我提到这一点是因为XCode inspector中似乎存在内存泄漏,但实际上可能根本不是内存泄漏。感谢您的添加,很高兴知道这一点!这让我想起了android设备上出现的另一个“现象”,也与设备清理机制有关:当android设备内存(RAM)不足时,您的Cookie、localstorage(实际上是所有非持久性存储)可能会被擦除,这也是为什么会话Cookie对于混合应用程序来说是一个非常糟糕的主意。iOS设备也有类似的清洗过程,当你看到应用图标下方的“清洗…”标签时。也可以看到: