【问题标题】:Memory leak occurring in iPhone X after updating to iOS 13更新到 iOS 13 后 iPhone X 发生内存泄漏
【发布时间】:2019-09-20 06:55:23
【问题描述】:

当我在 iPhone X 中更新到 iOS 13 时,内存泄漏开始发生,并且内存消耗不断增加,从未下降。其他设备(例如 iPhone 6,7 等)也没有发生这种情况。

我尝试使用显示以下泄漏图的仪器调试泄漏

【问题讨论】:

  • @MohmmadS 我没明白你的意思吗?你能解释一下吗
  • 如果您继续应用程序流程,这些泄漏数量会增加吗?或减少
  • 只有一次泄漏发生,它耗尽了整个手机内存,应用程序崩溃
  • 你能看出是什么线吗?
  • @MohmmadS 我们无法发现代码行

标签: ios swift memory-management memory-leaks iphone-x


【解决方案1】:

这里列出了多个URLSession 对象。这表明这些会话已实例化,但从未发布。这在使用基于委托的URLSession API 时很容易发生。

如果您要为每个请求创建单独的会话,请确保在提交请求后调用 finishTasksAndInvalidate,以便 URLSession 可以自行清理。

例如下面的……

func start() {
    let session = URLSession(configuration: .default, delegate: self, delegateQueue: nil)

    session.dataTask(with: url).resume()
}

...结果:

但是,如果我们添加一个finishTasksAndInvalidate,就可以解决:

func start() {
    let session = URLSession(configuration: .default, delegate: self, delegateQueue: nil)

    session.dataTask(with: url).resume()

    session.finishTasksAndInvalidate()
}

或者,也可以实例化一个URLSession(或使用URLSession.shared),然后所有请求都可以共享同一个会话。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    • 2011-12-10
    • 2011-05-24
    • 2023-03-20
    相关资源
    最近更新 更多