WkWebView 实例化中的内存泄漏

Posted

技术标签:

【中文标题】WkWebView 实例化中的内存泄漏【英文标题】:Memory leak in WkWebView instantiation 【发布时间】:2016-09-06 13:12:29 【问题描述】:

我有一个包含 wkwebview 的 Viewcontroller,当我从导航控制器弹出它时出现内存泄漏

堆栈跟踪导致 WkWebview 实例化

我也没有使用任何委托。

我真的很想知道是什么原因造成的以及如何解决这个问题

【问题讨论】:

我在操场上试过。 WKWebView 泄漏的简单实例化。这是一种很奇怪的行为。这仍然会发生 【参考方案1】:

很久没有观察到了(至少我不记得上次遇到它是什么时候了)。刚刚在 Xcode 11.2 / ios 13.2 中测试。没有泄漏 - 无论是在简单的测试项目中还是在 Playground 中。

因此,我认为应该分析实际使用情况,这会引入泄漏。

【讨论】:

我已经弄清楚了:由于某种原因,deinit 发生了,但不是立即发生。如果在您的 Playground 中将 webView 分配给一个弱变量,您可以看到这一点,然后在 webView = nil 之后打印该弱变量。 @GiuseppeLanza,deinit 发生,但不是立即发生 - 不是泄漏...@​​987654324@ 还活着,谁知道 WebKit 内部发生了什么...反正对象已销毁。而且,顺便说一句,游乐场只是一个游乐场。 同意这不是泄漏。我在单元测试中观察到了这种行为,并在操场上重新创建了它。在您回答之前没有意识到 webView 是稍后发布的。我用一个简单的类写了同样的东西,自然神论立即发生了。这就是为什么我觉得很奇怪。感谢您的帮助

以上是关于WkWebView 实例化中的内存泄漏的主要内容,如果未能解决你的问题,请参考以下文章

WKWebView与js交互中产生的内存泄漏

ObjectMapper SerializerCache 的单个实例中的对象过多导致内存泄漏

Android - 传递按钮实例时避免 AsyncTask 中的内存泄漏

netty API 中的内存泄漏

可能通过 FinalizerReference 泄漏内存

内存泄漏篇--1