我有一个PhoneGap应用程序。 HTML5 Canvas游戏。它似乎在iOS 8(包括8.0.2)和iOS 7中使用了更多的内存。PhoneGap在iOS8中使用比iOS7更多的内存
除了使用更多的内存,JS垃圾收集器似乎永远不会释放它所拥有的内存。它正确地收集“释放”的内存,但从未将它释放回iOS使用。
下面是使用iOS 7下的Instruments Allocations和iPhone 5S的内存使用情况。正如你所看到的,当我加载和卸载一个关卡时,它会上下移动。另外,内存使用率非常低,大约为23MB,在41.81mb
杏这里与iOS 8.0.2上的iPhone 5S运行相同的应用程序。正如你所看到的,内存使用永远不会下降,并且会占用更多的内存。事实上,随着我加载和卸载相同的级别,内存使用量会不断上升。它并不高,这让我认为JS可以正确地从垃圾收集器中重新使用内存,但是GC似乎永远不会释放它阻塞在操作系统中的内存。此外,整个应用似乎正在使用比以前更多的内存。
该应用程序的运行速度也很慢,在我停止时达到了121mb。
我要补充一点,我卸载时的水平重新加载页面,这奇怪不iOS的下释放任何内存8.
没有人有任何想法可能是造成这个问题以及解决方案可能是什么?这是iOS 8中的错误吗?
在8.0(但不是8.1)中,可以使用变通方法/ hack免费:在使用window.location.href =
强制重新加载页面之前调用window.location.reload(true);
。自8.1以来,这种黑客/解决方法不起作用。
,可能与(或等于)这个问题这可能是同一个问题。如果是这样,我认为有一个补丁版本可用(请参阅jira门票中的注释)。 – sandstrom 2015-01-27 13:54:21