iOS

swift进阶五:内存分区 & 小工具

2020-12-11  本文已影响0人  markhetao

swift进阶 学习大纲

分享一个基于MachO进行内存分区动态库libfooplugin.dylib

  1. libfooplugin.dylib工具
  2. 内存分析

1. libfooplugin.dylib工具

1.1 安装:

方式一:

根目录下创建.lldbinit文件:

vim ~/.lldbinit

输入:

plugin load /Users/XXX/XXX/libfooplugin.dylib

(/Users/XXX/XXX/libfooplugin.dylib替换为自己的存放路径)

方式二:

  • 任意目录下创建任意文件,文件内容为:
plugin load /Users/XXX/XXX/libfooplugin.dylib

(/Users/XXX/XXX/libfooplugin.dylib替换为自己的存放路径)

  • 在需要使用的工程中,选择刚才创建的文件
    image.png

方式三:

lldb中先调用方式二创建的文件

image.png

1.2 使用

2. 内存分析

按照地址排列: 栈区 -> 堆区 -> 全局静态区 -> 常量区 -> 代码区内核区保留部分不再考虑范围内)

image.png

下面是实践验证过程。

2.1 栈区

2.2 堆区

2.3 全局静态区

补充,static const修饰的变量,实际只是一个别名没有独立内存空间

image.png
image.png
  • let a = 1: 无法直接打印内容,但可以汇编查看地址偏移,读取偏移后的地址内容:
    image.png
  • var b = 2
    image.png

2.4 常量区

上一篇下一篇

猜你喜欢

热点阅读