【问题标题】:UIWebView leaks, JS Garbage Collector & WebCore VMsUIWebView 泄漏、JS 垃圾收集器和 WebCore 虚拟机
【发布时间】:2013-12-12 14:56:04
【问题描述】:

我一直在为一个明显适用于 UIWebView 的应用程序构建浏览器功能。我一直看到当浏览器打开时内存会增加,这是有道理的,但是在泄漏配置文件中我看到了一些令人不安的结果:

VM: JS 垃圾收集器 和 VM: WebCore purgeable data 我浏览的次数越多,它就会不断攀升。更糟糕的是,当浏览器被解除分配并且它的 web 视图被释放时,这些对象仍然存在,占用了 6 MB 以上的内存。

我不确定如果我没有正确处理 UIWebView 怎么办,但在 UIWebView 被释放后,这个内存似乎存在问题。

我在浏览器被释放之前执行了一些清理工作,正如这篇文章 http://www.codercowboy.com/code-uiwebview-memory-leak-prevention/ 中所描述的那样,但这似乎没有任何区别。

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

【问题讨论】:

标签: ios objective-c memory-leaks uiwebview


【解决方案1】:

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

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

我试图复制你的代码来清理数据并且下降了 50%。

JS 垃圾收集器的最小容量始终为 3MB 左右,但最大为 8MB WebCore 可清除数据始终在 700KB 左右

您也可能认为这可能与由于 JavaScript 代码泄漏而继续存在的不良 JavaScript 有关。

【讨论】:

  • 任何内存使用量随着用户继续交互而攀升的场景,而无法阻止它,我会认为这是一个非常严重的问题。 3 MB 在移动世界中是很大的内存,尤其是当它实际上什么都不做的时候。如果有办法处理它,我愿意这样做。
  • 我在模拟器中尝试了其他方法,在释放 Web 视图后发送内存警告。它将您提到的两个虚拟机的总内存减少到 2.1MB。由于我们正在谈论 Web 资源,我不确定是否有办法在它开始消耗过多内存时减少内存使用量。我们只是没有原生资源的那种内存管理选项。
猜你喜欢
  • 2011-02-12
  • 2012-06-28
  • 1970-01-01
  • 1970-01-01
  • 2018-05-10
  • 1970-01-01
  • 2012-01-03
  • 2016-11-02
  • 2012-05-21
相关资源
最近更新 更多