ios - 我可以找到创建命名 OSMallocTag 的库吗?

标签 ios memory-management darwin xnu

我使用分配工具来测量我的 iOS 应用程序中的堆使用情况。我发现在标签名称为“Memory Tag 70”的区域中分配了大量内存,我想知道谁对此负责,以便我可以追查:

  • 我是否适合尝试对这段内存做任何事情
  • 如果是这样,我应该怎么做(即什么代码在该区域分配对象)。

那么,我能否跟踪使用特定参数调用 OSMalloc_tagAlloc() 的来源?我愿意接受我可能只能在模拟器中运行时才能这样做,而不是在设备上运行。但即使是这样,我该怎么办呢?我可以让 dtrace 显示标签名称吗?如果可以,我可以通过 dtrace -c 在模拟器中启动我的应用程序吗?怎么办?

最佳答案

在仪器中,您可以通过选择位于窗口顶部和底部之间分隔线中的弹出窗口在各种显示之间切换。对于“Allocations”,您可以将其切换为显示“Call Trees”(我认为它默认为“Statistics”)。

这应该为您提供所有分配的调用堆栈。然而,我不确定它是否会从内核空间一直跟踪到用户空间。

关于ios - 我可以找到创建命名 OSMallocTag 的库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4449411/

相关文章:

c - malloc 和 free : pointer being freed was not allocated

java - 扩展 AnyVal 和 AnyRef 的对象的内存分配有什么区别

linux - Mac OSX 文件权限具有 '@' - 如何删除该 '@'

ios - SpriteKit 碰撞检测

python - 如何销毁 Python 对象并释放内存

c++ - clang (MacOS 32/64) : disable stack frames in some functions

llvm - Bazel 构建失败 `does not contain a toolchain for cpu ' darwin_arm6 4'`

ios - Facebook AppLinks 在 iOS 上究竟如何工作?

ios - 创建 UIImage 数组

ios - 在 iOS 11 中防止 UINavigationController 向上过渡并带有偏移量?