Nit*_*nai 9 memory cordova ios7 ios8
我有一个PhoneGap应用程序.HTML5 Canvas游戏.它似乎在iOS 8(包括8.0.2)和iOS 7中使用了更多的内存.
除了使用更多内存之外,JS垃圾收集器似乎也没有释放它所拥有的内存.它正确地收集"释放"内存,但从未将其释放回iOS供使用.
以下是在iOS 7和iPhone 5S下使用Instruments Allocations的内存使用情况.你可以看到它在我加载和卸载一个级别时上下移动.内存使用率也很低,约为23mb,最高为41.81mb

这是在带有iOS 8.0.2的iPhone 5S上运行的相同应用程序.正如您所看到的,内存使用量永远不会下降,并且它会占用更多内存.事实上,当我加载和卸载相同级别时,内存使用量会持续上升.它没有那么高,这让我觉得JS正确地重用了垃圾收集器中的内存,但是GC似乎永远不会释放它保留在操作系统中的内存.此外,整个应用程序似乎使用比以前更多的内存.
该应用程序运行速度也慢得多,到我停止时达到了121mb.

我应该补充一点,在卸载关卡时我会重新加载页面,这很奇怪地不会释放iOS 8下的任何内存.
有没有人有任何想法可能导致这个问题,解决方案可能是什么?这是iOS 8中的错误吗?
在8.0(但不是8.1)中,可以使用解决方法/ hack释放:window.location.reload(true);在强制页面重新加载之前调用window.location.href =.从8.1开始,这个hack/workaround不起作用.
终于解决了。
由于 WKWebView 中的文件加载错误,PhoneGap 默认使用 UIWebView。上述错误仅发生在UIWebView中。
我安装了以下插件,修复了 WKWebView 中的文件加载错误。这让我可以使用 WKWebView,它没有上面的内存错误。
https://github.com/Telerik-Verified-Plugins/WKWebView
| 归档时间: |
|
| 查看次数: |
2823 次 |
| 最近记录: |