ios UIWebView 中的大量内存泄漏

2024-02-27

为了寻找系统中其他地方的内存泄漏,我创建了一个带有元刷新标签的 20 MB 网页。我们的想法是通过我们的数据路径代码移动大量数据以确认内存稳定性。

<html>
<meta http-equiv="refresh" content="1">
<body>
<div style="border: 1px solid red">
    Content loading
</div><!-- 20mb worth of comments -->
</body>
</html>

我发现 uiwebview 显示元刷新页面泄漏内存非常非常快。即使我们的代码没有运行,应用程序内存在大约 2 分钟内就会达到 300mb,并会出现内存不足警告。

我已停止刷新加载并尝试解除分配网络视图。

我尝试过loadurl:“about:blank”,loadhtml:“”,javascript文档关闭。

我还尝试编写一个递归的removeFromSuperview和removeFromParentViewController,读到webview中的私有滚动视图是一个内存问题,但该内存永远不会被释放。我似乎无法找到一种可靠的方法来关闭,当我们完成它时释放它。

我们已经忍受了 webview 泄漏速度很慢的情况相当长一段时间了,并且真的希望找到一种方法来确保 webview 在我们使用完后能够被完全清理。我们最近将应用程序转换为 ARC,这并没有改变内存速率。

我正在考虑尝试对网络视图中的所有对象进行递归循环,看看是否可以释放它们。每次刷新 20MB 页面时,instruments 都会显示 20MB 的 cfdatas,但不会将其显示为泄漏。如果我只传递响应标头并完成到 urlprotocol 客户端,我们就能稳定运行,因此可以确认数据路径其余部分中的 memleaks,但这是一个如此戏剧性的测试用例结果,我希望能找到一次 webview mem 泄漏解决方案并为所有人。

有谁有更好的想法或者有人尝试过递归 uiwebview 中的对象吗?


我消除 UIWebView 内存泄漏的方法是将其 HTML 设置为空字符串。执行此操作的一个地方是当包含 Web 视图的视图控制器消失时:

- (void) viewWillDisappear:(BOOL)animated {
    if (self.isMovingFromParentViewController) {
        [self.wv loadHTMLString: @"" baseURL: nil];
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ios UIWebView 中的大量内存泄漏 的相关文章

  • 如何检测 UISwipeGestureRecognizer 的结束?

    来自苹果文档 滑动是一种离散手势 因此每个手势仅发送一次关联的操作消息 void touchesEnded NSSet touches withEvent UIEvent event 当我使用 UISwipeGestureRecognize
  • mgwt - 以编程方式改变方向

    是否可以在 gwt mgwt 应用程序中更改强制执行特定的屏幕方向 可以说我希望用户始终以横向模式使用应用程序 这取决于 是作为phonegap应用程序 而不是在浏览器内部 如果您作为 Web 应用程序运行 则不需要t get any co
  • PhantomJS 网页内存消耗?

    是否有一种编程方式 因为我想在运行时自动执行 方式来查看网页在通过 PhantomJs 运行时使用了多少内存 我也在使用 casperjs 如果这有帮助的话 我已经搜索了很多但没有找到任何方法 PhantomJs 使用 QtWebKit 因
  • Admob 广告无法快速显示

    您好 我正在尝试将 admob 广告添加到已使用 swift 上传到应用商店的应用程序中 我在 admob 中制作了一个应用程序并复制了 appid 和广告 id 并显示了各自的横幅广告和插页式广告 这里的问题是当我写这行时 request
  • UITableView:显示 tableFooterView 时运行代码?

    我正在使用 UIView表页脚视图 http developer apple com library ios documentation uikit reference UITableView Class Reference Referen
  • 如何正确创建迦太基 cartfile?

    我正在研究购物车文件 迫不及待地想 简单地创建一个购物车文件 就像所有说明所说的那样 只是 如何 简单地 创建一个 Cartfile 我创建了一个纯文本文档 将其命名为 cartfile 并在其中复制了一些依赖项 Ran carthage
  • 使用 NSString 进行 UTF8 解码

    我是 Objective C 新手 尝试使用以下示例将格式错误的 UTF8 编码 NSString 转换为格式良好的字符串苹果文档 http developer apple com library mac documentation Coc
  • Cordova 2.4.0 或 2.5.0 或 2.6.0 和 requirejs

    Cordova 2 4 0 及更高版本支持 AMD 加载到 javascript 中 我特别希望将 Cordova 2 5 0 与最新版本的 RequireJS backbone jquery jquery mobile 一起使用 我还没有
  • NSString stringWithContentsOfFile 失败,错误代码似乎错误

    我正在尝试将文件加载到字符串中 这是我正在使用的代码 NSError error nil NSString fullPath NSBundle mainBundle pathForResource filename ofType html
  • `navigator.geolocation.getCurrentPosition()` 在 iOS PWA 上挂起

    我有这个片段 const getCurrentPosition gt new Promise
  • MATLAB 列含义的内存分析

    我正在使用 MATLAB 配置文件来使用命令观察内存 profile memory on profile clear my code profile report and i got this table 1 我想问一下什么意思 已分配内存
  • React-native-vision-camera无法访问后面的普通摄像头

    我正在尝试在 iPhone 11 Pro 上使用 普通 相机 我使用反应本机视觉相机 当我运行这段代码时 const devices useCameraDevices const deviceBack devices back consol
  • locationOfTouch 和 numberOfTouches

    你好 我有这个识别器 设置为 2 次触摸 但它只返回一个 而不是两个 CGPoint void gestureLoad UIGestureRecognizer recognizer recognizer UITapGestureRecogn
  • 每 24 小时触发一次方法

    我正在尝试每天在给定时间触发一个方法 我尝试了一些方法 但我无法真正使其发挥作用 任何意见 将不胜感激 此外 如果无论应用程序是否打开它都会触发 那就更理想了 这可能吗 UI本地通知 http developer apple com lib
  • 使用未解析的标识符“FlurryAdInterstitial”

    我正在尝试整合Flurry Interstitial Ads使用cocoapods in Swift and Xcode 7 1 1 我正在关注开发人员雅虎网站上的此文档 https developer yahoo com flurry d
  • 如何让UITextView背景线与文字对齐?

    我正在尝试绘制 UITextView 的背景线 这是我用来画这些线的代码 CGContextBeginPath context CGContextSetStrokeColorWithColor context self horizontal
  • 调整 UIImage 的大小而不将其完全加载到内存中?

    我正在开发一个应用程序 用户可以在其中尝试加载非常非常大的图像 这些图像首先在表格视图中显示为缩略图 我的原始代码会在大图像上崩溃 因此我重写它以首先将图像直接下载到磁盘 是否有一种已知的方法可以调整磁盘上图像的大小 而无需通过以下方式将其
  • CoreBluetooth:检测设备超出范围/连接超时

    我正在设计一个 iOS 框架来处理多个 BLE 设备 均为同一类型 目前一切都运行良好 除了一件事 客户想要一个包含可用设备的列表 但是 我如何检测过去发现的设备何时不再可用 当我尝试连接到不再可用的设备时 会出现另一个问题 文档说 连接尝
  • 像 TraceGL 一样分析 Objective C 中的代码路径?

    TraceGL 是一个非常简洁的项目 它允许 JS 程序员跟踪 Javascript 中的代码路径 它看起来像这样 我想为 Objective C 构建类似的东西 我知道运行时使跟踪方法调用变得相当容易 但是我如何跟踪控制流 例如 在上面的
  • 隐藏选项卡栏项目并对齐其他选项卡项目

    在我的应用程序中 我有 4 个选项卡栏项目 我正在 XIB 文件中添加这 4 个选项卡栏项目 最初我必须显示 3 个选项卡栏项目 同步后我必须在我的应用程序中显示第 4 个选项卡栏项目 因此 为此 我使用以下代码隐藏第四个选项卡栏项目 se

随机推荐

  • 如何创建带圆角的用户控件?

    我正在尝试拥有一个具有圆角的用户控件 它没有固定的大小 但宽度通常不会超过 120 像素 我需要用户控件及其内容 标签和表格 具有圆形边缘并且看起来像圆形盒子 我已经使用过这段代码 DllImport Gdi32 dll EntryPoin
  • 使用通配符扩展来回显 zsh 中的所有变量

    对于以相同模式开头的多个变量 可以使用通配符来回显所有匹配的模式吗 when zzz1 test1 zzz A test2 zzza test3 匹配以 zzz 开头的所有变量的最佳方法是什么 哪里像echo zzz or for i in
  • 规范覆盖和最小覆盖之间的区别

    我知道如何计算最低保障 确保每个功能依赖项在 RHS 上只有一个属性 通过计算每个属性的闭包来删除无关 冗余的 LHS 属性 检查所有 FD 看看是否可以删除任何 FD 再次通过计算闭包 规范 封面只是同一事物的另一个词吗 规范封面 允许
  • 在 Talend 中加载一组文件的策略

    我想知道在 Talend 中解决以下问题的最佳策略是什么 我需要从存储在名称类似于 SAMPLE1 DAT SAMPLE2 DAT SAMPLEX DAT 的目录中的一组分隔文件中加载数据 目标将是 MySQL 数据库中的一个表 我必须立即
  • 内联复选框ajax修改数字

    我有一个像这样的 html 例如 li li
  • Keycloak/Wildfly 如何将所有控制台日志配置为 JSON 格式

    我正在使用官方 Keycloak 图像并尝试为控制台日志设置 JSON 格式 如下所示 启动 cli embed server server config standalone ha xml std out echo subsystem l
  • 导轨 3;活动记录;在哪里;数据库中两列之间的 NOT EQUAL 条件比较

    有没有某种方法可以使用比较数据库中的两列where 比如说 我有两列user这告诉我们 出生城市 最喜欢的城市 我想要一个具有不同于 city of birth 的 favourite city 的用户列表 我希望这样的事情能够奏效 use
  • 模糊图像的阈值 - 第 2 部分

    如何对这个模糊图像进行阈值处理以使数字尽可能清晰 In 以前的帖子 https stackoverflow com questions 13391073 adaptive threshold of blurry image 我尝试对模糊图像
  • R中的R图像函数

    我正在使用 R 中附加的图像函数 为了速度 我更喜欢使用它而不是热图 因为我将它用于巨大的矩阵 400000 x 400 我的函数中的问题是调色板的动态范围 在我的例子中它只有蓝色和黄色 我尝试了对 colorramp 线的多次更改 但没有
  • 获取不包含 DOCTYPE、HTML、HEAD 和 BODY 标签的 BODY 内容

    我想做的是在 PHP 系统中包含一个 HTML 文件 不是问题 但是由于各种原因 该 HTML 文件也需要单独使用 所以我需要知道如何剥离 doctype html PHP 上下文中的 head 和 body 标签 如果可能的话 我对 PH
  • 如何使用 Gspread 下载 Google Docs Excel 工作表并在本地访问数据(A1 表示法)?

    我需要通过 Gspread 从 Google Docs 下载 Excel 工作表 然后多次需要读取不同单元格的值 A1 符号 因此 我不能只获取电子表格然后致电val worksheet acell B1 value 因为脚本会因过多的 A
  • 显示 R 和 dplyr 的拟合值

    我有数据框DF 我在用R and dplyr来分析它 DF包含 gt glimpse DF Observations 1244160 Variables Channel int 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  • 将 ExceptionDescribe 转换为字符串

    我需要将 JNI 中 ExceptionDescribe 的输出作为字符串获取 以便之后可以将其写入文件中 而不是直接在命令行上写入 有什么方法或想法可以做到这一点吗 提前致谢 Sami ExceptionOccurred 是第一步 要获取
  • 当区域设置为阿拉伯语时 Android 中的日期格式问题

    我这里有一个严重的问题 我正在构建一个可以在阿拉伯语设备上运行的应用程序 我需要将日期发送到服务器 我使用 Android DatePickerDialog 来获取日期 但日期总是使用阿拉伯语字符发送 并且何时我尝试再次显示它 它给了我无法
  • 使用 JavaScript 计算 A、B、C、D,而不是 0、1、2、3...

    这可能是一个不寻常的请求 但对于我的脚本 我需要一个按字母而不是数字递增的函数 例如 这是一个数字示例 var i 0 while condition window write We are at i i 本质上 我想像 Microsoft
  • Rails 3.1 Devise 如何更改 Flash Message CSS 从通知到成功?

    Rails 3 1 和 Devise 1 5 问题 我使用以下代码在布局中显示 Flash 消息 我想将一些确认消息的 css 类从通知更改为成功 但我不知道在哪里覆盖或更改密钥 因为我不知道它在哪里设置 有人能指出我正确的方向吗 Than
  • Android webapp 中调用 JS 的原生代码

    我正在编写一个Android 网络 应用程序 我不会将应用程序上传到网络 而是在应用程序资源中设置HTML JS 这意味着 GUI 将是 HTML5 我将使用另一个 本机 线程从麦克风读取数据 并希望将 解析后的文本 发送到 HTML5 J
  • Microsoft.AspNetCore.Hosting.Abstractions 清单定义与程序集引用不匹配

    当我运行实体框架核心命令时add migration MyMigrationName在类库中我收到以下错误 无法加载文件或程序集 Microsoft AspNetCore Hosting Abstractions 版本 1 1 1 0 Cu
  • 如何在 C 语言中找到字符串中字符的索引?

    假设我有一个字符串 qwerty 我希望找到的索引位置e其中的人物 在这种情况下 索引将是2 我如何在 C 中做到这一点 我找到了strchr函数 但它返回一个指向字符的指针而不是索引 只需从 strchr 返回的内容中减去字符串地址即可
  • ios UIWebView 中的大量内存泄漏

    为了寻找系统中其他地方的内存泄漏 我创建了一个带有元刷新标签的 20 MB 网页 我们的想法是通过我们的数据路径代码移动大量数据以确认内存稳定性 div style border 1px solid red Content loading