iOS 内存分配猜想——勘误

点赞评论,希望能在你的帮助下越来越好

作者:@iOS成长指北,本文首发于公众号 iOS成长指北,欢迎各位前往指正

如有转载需求请联系我,记住一定要联系哦!!!

这是我参与更文挑战的第4天,活动详情查看:更文挑战

在前文 关于 iOS 内存分配的胡思乱想 一文中,笔者存在错误表述,在此对文章进行勘误。

研究 iOS 内存分配的流程并不无聊,可以从中理解 Apple 是如何设计类的,能够提升自己的工程能力。

错误

笔者在《让我们来调试 iOS 内存 – Memory Graph》一文中,讲解了如何利用程序运行过程中产生的.memgraph 文件分析内存。

再次,我们继续利用文章中的示例,进行对应的分析

我不知道之前出了什么问题,会有下述论断

笔者在《让我们来调试 iOS 内存 – Memory Graph》一文中通过分析应用程序的 .memgraph 文件证明了内存中存在三种内存类型:tinysmalllarge,所以如果存在 nano 类型,为什么这个类型在.memgraph 文件中得不到体现呢?

为什么在.memgraph 文件并没有 nano 部分

memory-nano.png

  1. 在内存中存在 MALLOC_LARGEMALLOC_SMALLMALLOC_TINYMALLOC_NANO,即 iOS 的内存视图 —— .memgraph 文件中说明了 iOS 内存的 4 种内存类型。
  2. 查看表格下方的 MALLOC_ZONE 部分,我们看到了 DefaultMallocZone 以及 MallocHelperZone,在前文分析中,我们知道当初次调用了 _malloc_zone_calloc 函数时,初次会生成 DEFAULT_MALLOC_ZONEMALLOC_HELPER_ZONE
  3. .memgraph 文件是一个存在 UIKit 动画和内嵌网页的应用运行一定的时间后生成的,所以总结信息中的 QuartzCoreWebkit_Malloc 是 APP 关于绘制部分和网页内存分配的。

当我们越深入内存,就越接近其内核。这里推荐阅读腾讯技术的 一文掌握 Linux 内存管理 ,希望可以对你有所帮助。


如果你有任何问题,请直接评论,如果文章有任何不对的地方,请随意表达。如果你愿意,可以通过分享这篇文章来让更多的人发现它。

感谢你阅读本文! ?

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享