2013-11-27 34 views
21

我一直在爲一個顯然與UIWebView一起工作的應用程序構建瀏覽器功能。我已經看到內存躥升時,瀏覽器會打開這是有道理的,但我是一個泄露個人資料中看到了一些令人不安的結果:UIWebView泄漏,JS垃圾收集器和WebCore虛擬機

Leaks profiling

VM:JS垃圾收集VM: WebCore可清除的數據只是越來越多,我瀏覽。更糟糕的是,當瀏覽器被釋放並且網絡視圖被釋放時,這些對象仍然存在,佔用6 MB以上的內存。

我不知道如果我沒有正確處理的UIWebView但似乎是被關押到一個UIWebView被釋放之後,此內存的問題。

我在瀏覽器被釋放之前執行了一些清理操作,因爲在這篇文章http://www.codercowboy.com/code-uiwebview-memory-leak-prevention/中被刪除了,但這似乎沒有任何區別。

有沒有人有這個問題?任何見解都會很棒。我已經看到一些已經與UIWebView內存問題相關的問題,但是他們沒有具體詳細介紹配置文件的結果。

+5

我也看到了。 –

+0

我也看到了同樣的問題,iOS 7.1。我在這裏有一個非常簡單的示例項目:https://bitbucket.org/tassinari/mtwebviewtest我也提交了一個錯誤http://www.openradar.me/radar?id=5869182600085504 – tassinari

回答

1

我不確定是否立即考慮這個問題。這些虛擬機只有在您將視圖添加到視圖層次結構並使用它加載請求時纔會啓動。

它可能只是保持這些資源活着的操作系統,以防再次使用它們。

我試圖複製你的代碼,清理數據,並有50%的下降。

的JS垃圾收集器總是在身邊3MB最低,但有8MB的 最大值的WebCore的吹出的數據總是在各地700KB

你也可以認爲這可能與不良的JavaScript繼續生活因爲JavaScript代碼中存在泄漏。

+3

任何情況下,內存使用率攀升用戶繼續互動,沒有辦法阻止它,我會考慮相當嚴重的問題。 3 MB是移動世界中的大量內存,特別是當它實際上什麼都不做時。如果有一種方法來處理它,我想這樣做。 – Aron

+0

我在模擬器中嘗試了其他方法,在釋放Web視圖後發送內存警告。它在你提到的兩個虛擬機中將總內存減少到了2.1MB。 由於我們在談論網絡資源,我不確定如果內存消耗過多,有一種方法可以減少內存使用量。我們沒有使用本機資源的內存管理選項。 –