使用堆快照分析显示内存地址,但不显示代码行。如何确定导致堆增长的原因?

2023-12-11

我的应用程序即将完成,在提交到应用程序商店之前,我正在使用 Instruments 来优化性能。我注意到,每当我执行特定操作(从外部服务器更新应用程序中的信息)时,我的堆就会增长约 350 KB。我在 stackoverflow 和 Apple 文档中发现的研究建议执行堆扫描来查找有问题的代码。然而,它并没有带我到有问题的代码,而是显示了内存地址。

有没有办法使用这些信息?或者我应该使用其他工具?我对仪器还很陌生,所以我很感激任何帮助。

我会展示一个屏幕截图,但我在这里的声誉还不够高。


有几点想法:

  1. In the heap shot, don't forget to show the extended detail (+E or select "Extended Detail" from the "View" menu) in the rightmost panel of Instruments.

    查看扩展详细信息时,它将向您显示堆栈跟踪,您可以双击那里的方法名称(它将是黑色而不是浅灰色),您将被带到生成分配的行(显然不一定是根本问题,但它会向您显示对象最初分配的位置,这是一个开始的地方)。

    view extended detail in heapshot analysis

  2. Having said that, I generally focus on the standard Allocations tool first. I'll option-drag in the allocations instrument timeline at the top to highlight allocations within this time window of execution, I'll then select "Call Tree", and to focus on just my code, I'll check the "Invert Call Tree" and "Hide System Libraries" boxes:

    option drag in allocations tool

    对我来说,我发现这是一种更有效的方法来识别在该时间窗口内发生的分配,而无需筛选系统分配。

  3. Do not forget to run your code through the static analyzer in Xcode (shift++B or choose "Analyze" on the "Product" menu). You should get a clean bill of health there before you even start running your app through Instruments.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用堆快照分析显示内存地址,但不显示代码行。如何确定导致堆增长的原因? 的相关文章

随机推荐

  • JavaScript 函数类似于 Python range()

    JavaScript 中是否有类似于 Python 的函数range 我认为应该有比每次都写以下几行更好的方法 array new Array for i 0 i lt specified len i array i i 对于 ES6 中非
  • 从提升的会话启动非提升的提示

    我有一些工具如果从提升的会话运行则无法工作 我正在运行提升的会话 在管理安装的上下文中 因此这是强制性的 因此这是不可更改的 除了创建计划任务并执行它之外 还有什么更快或更友好的方法吗 编辑 这是需要未提升运行的命令 vboxmanage
  • 在输入时将动画添加到边框底部

    我希望输入的边框底部颜色在单击时随动画变化 与黄线一类似 我希望它出现在所有输入框和选择上 input container display inline block text align center awsome input paddin
  • 读取 XML 数据时超出了最大字符串内容长度配额 (8192)

    我正在尝试将一个大字符串 24 000 到 50 000 个字符 传递给自托管 TCP WCF 服务 我已将 maxStringContentLength 所有位置 提高到 22008192 我在某处读到我需要将绑定配置更改为 LargeB
  • 列名称为 END 的“END 处或附近存在语法错误”

    我在 MYSQL 中有一个表 必须在 postgresql 中转换它 我正在使用以下命令来创建表 create table emp COMPLETE BOOLEAN NOT NULL END BOOLEAN NOT NULL 我得到的错误是
  • 为什么在 Java 中用接口名称来声明变量? [复制]

    这个问题在这里已经有答案了 这是一个真正的初学者问题 我仍在学习 Java 基础知识 我可以 某种程度上 理解为什么方法会返回 List 而不是 ArrayList 或者为什么它们会接受 List 参数而不是 ArrayList 如果它对方
  • android studio中找不到R类

    在旧版本的 Android Studio 中 我曾经能够导航到 java 生成 包并查看 R 类 我使用的是 Android studio 4 1 在 Java 生成的包中看不到 R 类 知道为什么吗 我在哪里可以找到 R 类 附 我重建了
  • GOF 中提到的可插拔适配器

    Stack Overflow 上与此主题相关的帖子 Post 1 and Post 2 上面的帖子很好 但我仍然无法解答我的困惑 因此我将其作为新帖子放在这里 我的问题基于 GOF 的可重用的面向对象软件的元素关于可插拔适配器的书籍内容 在
  • 如何安排python脚本在给定时间退出

    我需要安排一个 python 脚本 它可以在给定时间退出并自行终止 对于调度 我使用 pythonschedule下面是代码 import schedule from threading import Thread import time
  • 如何访问 iPhone 的通话记录/历史记录

    这是针对越狱的 iPhone 的 有没有办法可以访问 iPhone 上的 call history db 这是苹果记录电话信息的数据库 它存储在 private var mobile Library CallHistory 目录中 当我尝试
  • 如何对 Flask 端点进行 pytest

    我开始使用 Flask 和 Pytest 来通过单元测试实现休息服务 但我遇到了一些麻烦 我想为我的简单端点做一个简单的测试 但我不断得到一个Working outside of application context 运行测试时出错 这是
  • 程序化 Dojox 上传器 - ajax 上传不起作用

    我找不到任何有关以编程方式创建 dojox form Uploader 的文档 我自己尝试过 但看起来插件注册机制不知何故被破坏了 require dojo dom construct dijit form Button dojox for
  • 无法在 M1 Mac 上导入 Pygame.mixer

    运行代码时import pygame mixer 或任何其他引用 pygame mixer 的内容 在 2021 M1 MacBook Air 上运行命令后python3 我收到错误ModuleNotFoundError No module
  • 时间:2019-03-17 标签:c#controlnames

    有没有办法控制 Net 如何设置Name and ID我的控件的属性 我有一些单选按钮 我需要其名称相同 但是如果我设置ID单选按钮控件的属性 它设置Name和ID 我看不出有什么办法可以治疗ID and Name分别地 所以现在所有按钮的
  • 使用Reflection解析函数/方法内容

    我的单元测试框架由 TestFixtures TestMethods 和 Actions 组成 Action是TestMethod内部额外的一个较小的容器 Actions来自我们公司内部编写的Dll 操作在方法内部使用 如下所示 Test
  • 让两个对象在 SwingBot 中移动

    我试图做到这一点 以便在按下命令时两个形状都会移动 我的问题是 如何让蓝色多边形与黄色矩形一起移动 无论我做什么 我似乎都无法弄清楚 任何帮助表示赞赏 谢谢 EDIT 删除了计时器代码 它是为了不同的东西 import javax swin
  • 用 Python 编写单元测试:如何开始? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我用 Python 完成了第一个正式项目 现在我的任务是为其编写测试 由于这是我第一次做一个项目 这也是我第一次为其编写测试 问题是 how我开始吗 我完全不知道 任何人都可以向
  • 有没有办法只显示基于数组的 json 对象中选定的属性

    我有以下对象 calendarLists Title titel1 Color blue number 1 Title titel2 Color green number 2 Title titel3 Color red number 3
  • SpringBoot:GenericJDBCException: 无法获取 JDBC 连接

    我通过使用以下属性动态创建 DataSource 来连接到 mysql 数据库 它工作正常 但一段时间后它不断给我错误 无法获取 JDBC 连接 package com test db import org springframework
  • 使用堆快照分析显示内存地址,但不显示代码行。如何确定导致堆增长的原因?

    我的应用程序即将完成 在提交到应用程序商店之前 我正在使用 Instruments 来优化性能 我注意到 每当我执行特定操作 从外部服务器更新应用程序中的信息 时 我的堆就会增长约 350 KB 我在 stackoverflow 和 App