我刚刚发现,当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