cordova多页应用程序是否改善了垃圾收集?

时间:2014-06-18 17:41:05

标签: javascript cordova garbage-collection

我对javascript中的垃圾收集感到非常困惑,我不确定它什么时候发生。

我想知道是否会在每次页面更改时收集所有垃圾。所以在制作多页应用程序时可能是值得的,以便定期收集垃圾。

由于 Mobile Safari图片资源限制

,我特别感兴趣

This issue

or here is another one

所以我很好奇,如果我有一个多页应用程序,如果这会使图像资源限制消失。

2 个答案:

答案 0 :(得分:1)

到目前为止,我已经看到并了解到Phonegap并没有自己的垃圾收集机制。这完全取决于平台如何处理他们的Web视图。浏览器也会以不同的方式处理javascript垃圾回收。

所以一个浏览器可能会以某种方式处理它,另一个浏览器可能不会。我还想知道是否有人回答有关多页垃圾收集的问题。截至目前,我认为它在平台上有所不同。

据我所知,ios只会在需要时撤销垃圾回收。它使用ARC(自动引用计数)另一方面,android有本机代码强制像System.gc()那样的垃圾收集所以当你需要在android中进行垃圾收集时,你可以从JS调用本机代码。无法告诉你如何为ios做些什么。您可以检查基于平台的垃圾收集,这可能有助于您了解更多信息。

答案 1 :(得分:1)

不是这方面的专家,但这是我发现的:

这篇关于垃圾收集的优秀Smashing杂志文章:Writing fast, memory-efficient Javascript(正好在#34;拇指规则和#34;副标题之上)提到:

  

"刷新页面,导航到其他页面,关闭标签页或退出浏览器时,会清除全局变量。当变量超出范围时,函数范围的变量会被清除。当函数退出并且没有任何更多引用时,变量将被清理。" - SmashingMagazine文章

是的,它是在每次更改页面时收集的,然而

  

[...]"但是在真实的代码模块或实际应用程序中对其进行测试,这些优化的真正影响可能比您预期的要小得多。&#34 ;    - SmashingMagazine文章

因此,您的应用程序可能会因为必须加载不同的资源而不是让浏览器自动收集垃圾而遭受更多的性能损失(除非您的编码风格很糟糕),

这篇文章有一个很好的例子,说明每种类型的对象(变量,函数,闭包)是如何被垃圾收集的。

此外,这篇名为Why mobile web apps are slow的文章是关于垃圾收集在移动设备上实际上是一件坏事的非常长(但很棒)的解释,因为它实际上会减慢应用程序,除非它处理6x所需的内存量(因此它被认为是桌面和笔记本电脑上的欢迎帮助)

进一步参考: