ios – Firebase observeSingleEvent停留在内存中

ios – Firebase observeSingleEvent停留在内存中,第1张

概述我的应用程序使用firebase的observeSingleEventOfType相当不错,我意识到,我的应用程序的内存随着时间的推移而增加。我已经注释掉了我所有的代码,除了一个调用以下功能的测试按钮。 func loadPostsTest() { FIRDatabase.database().reference().child("posts").observeSingleEventOfT 我的应用程序使用firebase的observeSingleEventOfType相当不错,我意识到,我的应用程序的内存随着时间的推移而增加。我已经注释掉了我所有的代码,除了一个调用以下功能的测试按钮。

func loadpoststest() {    FIRDatabase.database().reference().child("posts").observeSingleEventOfType(.Value,withBlock: { (snapshot: FIRDataSnapshot) in        print(snapshot.value)    })}

当程序启动时,我以大约2,3次的速度快速按下测试按钮,并观察如下所示的记忆图。内存上升,请求后不会回退。这个问题长期影响我的应用程序,因为我的应用程序的内存将从70mb增长到150 mb。有什么理由吗?

请注意,短暂的五秒钟的休息是我停止,以确保打印出所有“快照”。

注2 …当我停止按下按钮时,内存将保持在与“短暂休息部分”相同的级别。只是让你认为它无限期地长大

——-更新———-

为了进一步确认问题,我创建了一个没有任何东西的全新项目,但是firebase导入,故事板中的一个按钮,具有以下代码,并在我的6s上模拟(模拟模拟器似乎没有这个问题)。下面的图片证明,这里有一些有趣的事情发生在火炉上,因为我的记忆在一分钟左右的时间里,从11.1mb降到了17.3mb,有303个请求。

import UIKitimport Firebaseclass VIEwController: UIVIEwController {var count: Int = 0overrIDe func vIEwDIDLoad() {    super.vIEwDIDLoad()    // Do any additional setup after loading the vIEw,typically from a nib.}@IBAction func testBtnpressed(sender: AnyObject) {    FIRDatabase.database().reference().child("posts").observeSingleEventOfType(.Value,withBlock: {[weak self] (snapshot: FIRDataSnapshot) in        print(self?.count)        self?.count += 1    })}
解决方法 这可能只是因为您正在调试版本中运行。我的结果,经过〜128次点击设备与调试版本:

正如你所看到的,绝大多数内存消耗是由于与调试相关的性能工具。您可以通过编辑您的方案来禁用此功能:

然后禁用回溯记录:

它被禁用,同样〜128个点击显示基本上没有增长:

假设您可能不希望将其禁用,因为您可能会发现它有助于诊断调试版本中的崩溃和其他问题。这不应该是发布版本的问题!

作为参考,这是我正在运行的代码:

import UIKitimport FirebaseDatabaseclass VIEwController: UIVIEwController {    @IBOutlet weak var label: UILabel!    private var count: Int = 0    overrIDe func vIEwDIDLoad() {        super.vIEwDIDLoad()        // Do any additional setup after loading the vIEw,typically from a nib.    }    @IBAction func testBtnpressed(sender: AnyObject) {        let db = FIRDatabase.database().reference()        db.child("posts").observeSingleEventOfType(.Value) { [weak self] (snap: FIRDataSnapshot!) in            guard let this = self else { return }            this.count = this.count + 1            this.label.text = "\(this.count)"        }    }}
总结

以上是内存溢出为你收集整理的ios – Firebase observeSingleEvent停留在内存中全部内容,希望文章能够帮你解决ios – Firebase observeSingleEvent停留在内存中所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1074695.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存