【发布时间】:2016-05-16 12:50:01
【问题描述】:
我有三星 Galaxy S4 (Android 5.0.1)。我用 WebView 测试了 2 个应用程序。
1) 在其中之一中,地图与标记和线(路径)一起使用。经过 10-20 次轮班和缩放后,它被 OutOfMemory 压垮了。
2) 在第二个中,一个公司的站点被集成在 Cordova 中。在加载 20-60 个页面后,它也会因 OutOfMemory 而崩溃。 当我看到内存分配时,它就像一把锯子:在增加到某个限制后它会释放,然后再次增加。在 2-4 个峰值之后,它会压碎。
在其他一些设备上,这些美眉不会被复制。 PlayMarket 的回复也是如此。
我阅读了很多文章,包括http://www.dwmkerr.com/fixing-memory-leaks-in-angularjs-applications/。应用程序使用 Angular JS。当我在 Chrome 和 Firefox 开发人员的控制台中对其进行测试时,我看到在达到 12 Mb 的峰值后,浏览器中的垃圾收集器启动了。
我有这些问题。
1) WebView 是否有自己的垃圾收集器(我认为是 Javascript GC)?
2)如果一个WebView只是一个View,为什么它没有被销毁,而是整个应用崩溃了?
3) Android GC 如何影响 WebView(可能是 Chromium GC)以及 WebView 如何告诉 Android GC 释放内存?
【问题讨论】:
-
请参阅stackoverflow.com/a/16530168 以获得有关 GC 的答案。您可能希望在您的 Android 应用程序中使用 CrossWalk,以便在所有 Android 设备上使用相同的 web 视图(请注意,根据 CrossWalk 版本,某些 Android 版本不兼容)。
-
@user276648,谢谢,我也看到了,然后尝试设置 CrossWalk(但无法设置,它增加了 apk 的权重)。可能这篇文章(auth0.com/blog/…)可能会很有趣,我也是这样研究的。
-
据我了解,一个问题已经解决了。开发人员升级了旧版本的 Cordova。
标签: android cordova webview garbage-collection