2012-02-23 95 views
7

我剛剛發現,當UIwebview得到釋放時,它使用的大部分內存都沒有完全回收。在做了一些配置文件之後,我發現大部分仍然活着的內存都是字體字形緩存(如果打開中文網頁,問題會更糟糕,因爲中文有更多字符,這意味着更多字體字形)。Font Glyph/UIWebView中的內存泄漏

有沒有什麼辦法可以控制緩存?我正在使用iOS網絡瀏覽器,這個問題阻止了我2周。

Attached是一個簡單的repro演示。 1)運行帶有內存「分配配置文件」的演示。 2)在地址欄中輸入http://www.163.com並等待它完成加載。 3)你可以在儀器工具中看到大約10M的內存消耗。 4)點擊清除按鈕(UIwebview將從視覺樹中刪除並得到回收) 5)仍然可以看到9M左右的內存活着。

順便說一句,NSURLCache被禁用以下代碼,以分離問題。 [[NSURLCache sharedURLCache] setMemoryCapacity:1]

+0

我想調查移動Safari如何處理這個問題。有什麼辦法可以用otool打印導入符號表嗎? otool -ov打印此應用程序中定義的所有符號,但我想知道此應用程序從其他動態庫鏈接的符號。我使用class-dump-z來轉儲所有頭文件,但沒有得到任何有用的信息。 – 2012-02-23 02:53:56

+0

實際的問題是CoreGraphics中的draw_glyphs,CGFontCreateGlyphBitmap之後,位圖被緩存,並且我們無法控制緩存。這不是漏水,但在iPad1上,這對我的應用程序來說真的是一個問題(有很多文字) – 2012-02-23 13:34:13

+1

你有沒有找到答案?我也試圖避免UIWebView字體內存的問題。 – 2012-07-07 13:24:11

回答

0

我們在我們的生產應用程序中觀察到類似的問題。我創建了一個降低臭蟲我反覆清楚web視圖(負載「<HTML> </HTML >」),然後加載以下URL在一個UIWebView的:

http://typecast.com/preview/google/Mr%20Bedfort/Sigmar%20One/Miss%20Fajardose 

這之後約180可靠地崩潰應用負載。我已經向Apple提交了一份關於此問題的錯誤報告,問題ID爲15659596,我正在等待回覆。

但是,我仍然不清楚在什麼情況下會發生這種情況,以及何時不發生。顯然,它發生於那些URL,但我也測試了相同的過程:

  1. 相同的Web內容所觀察到的問題,在野外我們的應用程序
  2. 一個谷歌圖片搜索之類的字詞「下大雨」。

在這兩種情況下,都不會出現問題。我沒有觀察到長期的內存使用增長,應用程序也沒有崩潰。

所以我沒有給你任何答案,但我可以確認UIWebView存在一個問題,我已經向Apple報告了這個問題,並且確實看起來與Web字體有關。