2013-11-27 36 views
21

我一直在为一个显然与UIWebView一起工作的应用程序构建浏览器功能。我已经看到内存蹿升时,浏览器会打开这是有道理的,但我是一个泄露个人资料中看到了一些令人不安的结果:UIWebView泄漏,JS垃圾收集器和WebCore虚拟机

Leaks profiling

VM:JS垃圾收集VM: WebCore可清除的数据只是越来越多,我浏览。更糟糕的是,当浏览器被释放并且网络视图被释放时,这些对象仍然存在,占用6 MB以上的内存。

我不知道如果我没有正确处理的UIWebView但似乎是被关押到一个UIWebView被释放之后,此内存的问题。

我在浏览器被释放之前执行了一些清理操作,因为在这篇文章http://www.codercowboy.com/code-uiwebview-memory-leak-prevention/中被删除了,但这似乎没有任何区别。

有没有人有这个问题?任何见解都会很棒。我已经看到一些已经与UIWebView内存问题相关的问题,但是他们没有具体详细介绍配置文件的结果。

+5

我也看到了。 –

+0

我也看到了同样的问题,iOS 7.1。我在这里有一个非常简单的示例项目:https://bitbucket.org/tassinari/mtwebviewtest我也提交了一个错误http://www.openradar.me/radar?id=5869182600085504 – tassinari

回答

1

我不确定是否立即考虑这个问题。这些虚拟机只有在您将视图添加到视图层次结构并使用它加载请求时才会启动。

它可能只是保持这些资源活着的操作系统,以防再次使用它们。

我试图复制你的代码,清理数据,并有50%的下降。

的JS垃圾收集器总是在身边3MB最低,但有8MB的 最大值的WebCore的吹出的数据总是在各地700KB

你也可以认为这可能与不良的JavaScript继续生活因为JavaScript代码中存在泄漏。

+3

任何情况下,内存使用率攀升用户继续互动,没有办法阻止它,我会考虑相当严重的问题。 3 MB是移动世界中的大量内存,特别是当它实际上什么都不做时。如果有一种方法来处理它,我想这样做。 – Aron

+0

我在模拟器中尝试了其他方法,在释放Web视图后发送内存警告。它在你提到的两个虚拟机中将总内存减少到了2.1MB。 由于我们在谈论网络资源,我不确定如果内存消耗过多,有一种方法可以减少内存使用量。我们没有使用本机资源的内存管理选项。 –