当前位置: 首页 > news >正文

深入了解iOS内存(WWDC 2018)笔记-内存诊断

主要记录下用于分析iOS/macOS 内存问题的笔记。
主要分析命令: vmmap, leaks, malloc_history

一:前言

有 3 种思考方式

  • 你想看到对象的创建吗?
  • 你想要查看内存中引用对象或地址的内容吗?
  • 或者你只是想看看 一个实例有多大?

如果你在进程启动时 启用了 malloc 堆栈日志记录, 那么 malloc_history 可以帮助你查找 该对象的回溯。
如果你只是想看看 在内存中引用对象的内容。 你可以使用 leaks 和在内存页面中 提供的其他工具来帮助你 。
最后 如果你只是想了解 一个区域或一个实例有多大 vmmapheap 是首选工具 作为起始点。
我建议在进程的 Memgraph 上 运行带有 -summary 命令的 vmmap 然后顺着线程继续进行.

二:准备

勾选Malloc Statck Logging ,这样 malloc_history 才有效果。
在这里插入图片描述

xcode 导出 .memgraph
在这里插入图片描述

在这里插入图片描述

三:命令

vmmap

  • vmmap --summary app.memgraph
    dirty sizeswapped size 才是我们需要关注的内容
    dirty size 代表脏内存大小,我们app希望脏内存越小越好,最好都是clean内存
    swapped size iOS 中代表 压缩的内存
    app 使用的总内存一般为 = dirty size + swapped size
    在这里插入图片描述
  • vmmap --page app.memgraph | grep '.dylib'
    对上面的内容只 看 '.dylib' 动态库
    在这里插入图片描述

leaks

  • leaks app.memgraph 命令查看无根内存,代表这不能被释放的无根内存(macOS适用)
  • leaks -traceTree 0x000000014b9b4000 PlanetPics.memgraph

在这里插入图片描述

heap

  • heap App.memgraph 查看堆对象
  • heap App.memgraph -sortBySize 按分配的大小排序,找出内存最大的那个元素,比如NSConcreteData
  • heap App.megraph -addresses all | ‹classes-pattern> 直接查找上一步NSConcreteData的具体数据 heap App.megraph -addresses NSConcreteData

malloc_history

  • malloc_history app.memgraph [address] 找到上一步的有问题的其中一个地址,进行堆栈跟踪
    leaks -traceTree 0x000000014b9b4000 PlanetPics.memgraph
  • malloc_history PlanetPics.memgraph --fullStacks 0x000000014b9b4000
    在这里插入图片描述

四: Xcode 查看内存泄露

双击app.memgraph 打开Xcode后,
点击筛选可以单独查看内存泄露的内存
在这里插入图片描述

链接: https://developer.apple.com/wwdc18/416

http://www.lryc.cn/news/334707.html

相关文章:

  • 《C语言深度解剖》(4):深入理解一维数组和二维数组
  • 信号处理基础
  • 原地移除数组中所有的元素val,要求时间复杂度为O(N),空间复杂度为O(1)
  • 如何提升产品用户体验?4个工具+6张案例,让你快速吃透!
  • C++学习笔记九--模版
  • 19、差分矩阵
  • wordpress外贸独立站模板
  • HTTP/1.0、HTTP/1.1、HTTP/2.0、HTTP3.0的区别
  • 聚合DNS管理系统v1.0全新发布 域名解析管理系统
  • LabVIEW厂房漏水检测监控系统
  • (3)(3.1) 英特尔Realsense深度摄像头(二)
  • go interface{} 作为函数参数
  • Django之REST Client插件
  • java实现UDP数据交互
  • 护眼台灯怎么选看哪些指标?不踩雷护眼台灯十大排名
  • Web API(六)之正则表达式
  • 304. 前缀和技巧中的边界值处理
  • ios swift5 “Sign in with Apple“(使用苹果登录)怎样接入(第三方登录)集成AppleID登录
  • 时间系列预测总结
  • NineData创始人CEO叶正盛受邀参加『数据技术嘉年华』的技术大会
  • nginx访问路径映射资源目录
  • 数据挖掘|序列模式挖掘及其算法的python实现
  • 3. Django 初探路由
  • 论文笔记:Large Language Models as Analogical Reasoners
  • 第3章 数据定义语言DDL
  • C#操作MySQL从入门到精通(7)——对查询数据进行简单过滤
  • 【CVE复现计划】CVE-2024-0195
  • k8s的ca以及相关证书签发流程
  • 思迈特软件与上海德拓签署战略合作协议,携手赋能企业数字化转型
  • 【快捷部署】015_Minio(latest)