iphone - UIWebView内存管理

标签 iphone cocoa memory-management memory-leaks uiwebview

我在内存管理方面遇到问题。

我正在开发一个大量使用 UIWebView 的应用程序。该应用程序在从我的服务器加载内容时动态生成大量 UIWebView。其中一些 UIWebView 非常大并且有很多图片。

如果我使用仪器来检测泄漏,我不会检测到任何泄漏。但是,分配了很多对象,我怀疑这与 UIWebViews 有关。

当 webviews 因为不再需要而释放时,似乎并没有释放所有内存。我的意思是,在向我的服务器发出请求后,应用程序会创建一个 UITableView 和许多 webview(仪器显示大约 8Mb)。当用户点击返回时,所有这些都被释放,但内存使用量仅减少约 2-3 Mb,并且在使用应用程序 5-10 分钟后崩溃。

我错过了什么吗? 有人知道会发生什么吗?

谢谢!

最佳答案

这不是解决方案,而是对您所面临问题的可能解释。

我开发的一个应用程序出现了内存问题。它由(实际上)一个 ScrollView 组成,其中包含 3 个全屏大小的 Web View 。每个 webview 的内容大小是多个屏幕,平均 10 个。

当您加载 webview 时,整个 View 都会在内存中呈现。因此,除了用于加载图像和其他数据的内存(您在分配工具中看到的内容)之外,Web View 本身在渲染时会使用您无法控制的内存。

例如,一个 768x1024 的 webview,有 10 页的内容将使用

768 * 1024 * 10(页)* 4(每像素位数)= 31,457,280 = 30MB。

乘以 3 Web View ,即应用程序直接分配的内存使用了 90MB。

您可以使用VM Tracker仪器来了解仪器中使用了多少内存。

关于iphone - UIWebView内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2950907/

相关文章:

iphone - iOS模拟器和XCode来模拟Compass?

iphone - iOS 中的自定义形状(倒 T)边框 Uiview

macos - 启用 NSScrollView 使用 Interface Builder 中的自动布局滚动其内容

c++ - 以混合(HYB)格式为CUDA中的稀疏矩阵分配内存?

c++ - 当我只能覆盖新的和删除的时候,为什么我要为 STL 容器编写自定义分配器?

iphone - 拖动注解 View 导致多次触发拖动状态委托(delegate)方法

cocoa - 获取 NSCollectionView 的首选大小

objective-c - 如何解决 "Instance method [...] not found"错误?

iphone - 这是正确的代码重新存储管理-对于基本的自定义类

iphone - 要在 iPhone 上显示的 URL 上的文本文件的内容