Font Glyph / UIWebView中的内存泄漏

时间:2012-02-23 02:45:58

标签: caching memory-leaks fonts uiwebview glyph

我刚刚发现当UIwebview被解除分配时,它使用的大部分内存都没有完全回收。在做了一些配置文件之后,我发现大部分仍然存活的内存是字体字形缓存(如果你打开一个中文网页,问题会更严重,因为中文有更多的字符,这意味着更多的字体字形)。

我们有什么办法可以控制缓存吗?我正在使用iOS网络浏览器,这个问题阻止了我2周。

Attached是一个简单的repro演示。 1)运行带有内存“分配配置文件”的演示。 2)在地址栏中输入http://www.163.com并等待它完成加载。 3)您可以看到仪器工具消耗的大约10M内存。 4)单击清除按钮(UIwebview将从可视树中删除并获得回收) 5)你仍然可以看到大约9M的记忆。

BTW,使用以下代码禁用NSURLCache,以分离问题。 [[NSURLCache sharedURLCache] setMemoryCapacity:1]

1 个答案:

答案 0 :(得分:0)

我们在生产应用中发现了类似的问题。我创建了一个减少错误的地方,我反复清除网页视图(加载“< html>< / html>”),然后在UIWebView中加载以下网址:

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

在大约180次加载后,这可靠地使应用程序崩溃。我已向Apple提交了错误报告,问题ID为15659596,我正在等待回复。

然而,我仍然不清楚这种情况究竟发生在什么情况下,何时不发生。显然,它发生在该URL上,但我也用以下方法测试了相同的程序:

  1. 与我们的应用程序中的野外问题相同的网络内容
  2. Google图片搜索“cat”和“dog”等字词。
  3. 在这两种情况下,问题都没有出现。我发现没有长期的内存使用量增长,应用程序也不会崩溃。

    所以我没有任何答案,但我可以确认UIWebView存在问题,我已经向Apple报告了这个问题,而且它似乎与网络字体有关。