iOS底层探索-启动优化

248 阅读1分钟

监测启动时间

  1. Pre-main 阶段,通过DYLD监测 DYLD_PRINT_STATISTICS

image.png

dylid loading time:动态库的载入耗时

rebase:修复偏移,binding:外部函数符号绑定

Objc setup time:OC类注册的耗时

initializer time:

解决方案

项目工程减少动态库数量,超过六个合并动态库,舍弃项目中没用的类

  • 冷启动 数据从磁盘加载到物理内存的过程

  • 热启动 物理内存存在数据,启动读取物理内存的过程

优化方案

  • 离屏渲染
  • 多线程异步加载
  • 优化可执行文件

项目加载顺序

项目的可执行文件,以页为单位,懒加载的形式加载到物理内存中

  • 懒加载:系统访问虚拟内存,数据没有载入到物理内存,系统抛出PageFult(缺页异常),数据以页的形式加载到物理内存的过程