我有一個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