【问题标题】:Swift: is perfect memory possible?斯威夫特:完美的记忆可能吗?
【发布时间】:2023-03-30 03:54:01
【问题描述】:

我创建了一个非常复杂的购物应用,并且对结果感到满意。一切都已正确取消初始化,仪器说没有内存泄漏。但是,我发现当我对应用程序进行密集测试时,内存会持续略微上升。磁盘空间很好。但是在应用程序上每 5 分钟,我会说增加了 0.02MB(非常小)。这是一个快速交付的应用程序,所以我非常怀疑有人会一次使用它足够长的时间,甚至会导致整个 MB 的增加。我应该担心吗?是否有可能完全消除这种轻微的增加?或者我应该回去审查每一行代码。如果这很重要,这个应用程序永远不会超过 50MB(因为即使经过 30 分钟的测试它运行的足够低,它也不会超过 50MB;假设我运行几个小时它会)

【问题讨论】:

    标签: swift xcode memory


    【解决方案1】:

    我还是应该担心吗?

    我想找出哪些对象被保留,然后决定它是否足够重要来修复。

    这些对象可能完全是良性的,或者它们正在做一些对您的应用真正重要的事情。

    如果它是缓存中的静态字符串数组,并且随着时间的推移缓慢增长,那么很好。

    如果它是一堆仍在内存中的已失效 ViewModel,它们都在侦听通知并发出网络请求或更改用户数据 - 然后将它们杀死。

    【讨论】:

      【解决方案2】:

      我还应该担心吗?是否有可能完全消除这种轻微的增加?

      使用分配工具在 Instruments 中运行您的应用,并观察应用闲置时发生的分配。了解分配的大小和频率应该有助于您了解正在发生的事情并更好地了解您的应用的内存增长情况。

      在您了解它们是什么之前,您无法知道是否需要解决这些分配问题,但是逐行检查所有代码以希望找到罪魁祸首充其量是一种非常缓慢的方法来了解问题的根源问题。 Xcode 包含的工具可以在这里为您提供帮助,使用它们将改进您的应用程序并帮助您学习成为更好的开发人员。

      【讨论】:

        猜你喜欢
        • 2016-10-21
        • 2017-07-22
        • 2017-03-24
        • 1970-01-01
        • 2016-02-08
        • 2017-11-13
        • 2015-08-19
        • 2014-09-11
        • 1970-01-01
        相关资源
        最近更新 更多