我剛剛發現,當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]
我想調查移動Safari如何處理這個問題。有什麼辦法可以用otool打印導入符號表嗎? otool -ov打印此應用程序中定義的所有符號,但我想知道此應用程序從其他動態庫鏈接的符號。我使用class-dump-z來轉儲所有頭文件,但沒有得到任何有用的信息。 – 2012-02-23 02:53:56
實際的問題是CoreGraphics中的draw_glyphs,CGFontCreateGlyphBitmap之後,位圖被緩存,並且我們無法控制緩存。這不是漏水,但在iPad1上,這對我的應用程序來說真的是一個問題(有很多文字) – 2012-02-23 13:34:13
你有沒有找到答案?我也試圖避免UIWebView字體內存的問題。 – 2012-07-07 13:24:11