Font Glyph/UIWebView中的内存泄漏

jim*_*ang 8 fonts caching memory-leaks glyph uiwebview

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

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

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

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

Mic*_*son 0

我们在生产应用中观察到类似的问题。我减少了错误,反复清除 Web 视图(加载“<html></html>”),然后在 UIWebView 中加载以下 URL:

http://typecast.com/preview/google/Mr%20Bedfort/Sigmar%20One/Miss%20Fajardose
Run Code Online (Sandbox Code Playgroud)

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

然而,我仍然不清楚这种情况到底在什么情况下发生,什么时候不发生。显然,该 URL 会发生这种情况,但我也使用以下方法测试了相同的过程:

  1. 在我们的应用程序中观察到该问题的相同网页内容
  2. Google 图片搜索“猫”和“狗”等术语。

在这两种情况下,问题都不会出现。我观察到内存使用量没有长期增长,并且应用程序也没有崩溃。

所以我没有任何答案给你,但我可以确认 UIWebView 确实存在问题,我已将其报告给 Apple,并且它似乎确实与网络字体有关。