我们应用的主屏幕(也就是所有用户都会看到的第一个屏幕)有几个部分,其中大多数包含用户可能想要打开的不同的 Webview。这样做会将内存使用量从仅26MB增加到85MB甚至更多(在打开所有不同的Webview之后)。
我们发现的问题是,一旦关闭它们,所有网页资源似乎都被保留在内存中(使用的内存几乎只减少了几MB)。
我想释放Webview打开时所需的资源,因为后来我们的应用程序有一个非常严格的部分需要大量的内存,如果您之前经过了几个这样的Webview浏览,将完全崩溃应用程序。
我在互联网上找到了几个尝试的选项,但迄今为止没有一个有效。类似以下的东西:
// Try to clean used webview
[self.webView loadHTMLString:@"" baseURL:nil];
[self.webView stopLoading];
self.webView.delegate = nil;
[self.webView removeFromSuperview];
self.webView = nil;
它们对内存使用几乎没有任何影响。这里我是否遗漏了什么?我已经仔细检查了,没有泄漏会使WebView保持打开状态。我也已经释放了我唯一拥有的引用(self.webView = nil;
)
编辑:我刚刚从头开始创建了一个项目,添加了一个WebView和一个按钮,每次点击它都会加载不同的网页,这反过来又增加了内存使用量。我还添加了一个按钮,当点击时会销毁WebView,猜猜会发生什么?内存保持不变,就像它实际上没有释放任何资源。