|
95 | 95 | <meta property="og:image" content="http://upload-images.jianshu.io/upload_images/1171135-8ce6a34b39620ae2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1000">
|
96 | 96 | <meta property="og:image" content="https://upload-images.jianshu.io/upload_images/1171135-4fbc492559ba2268.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1000">
|
97 | 97 | <meta property="og:image" content="http://ofnft8t2g.bkt.clouddn.com/wikiimage6_new.png">
|
98 | | -<meta property="og:updated_time" content="2018年09月27日T12:39:28.527Z"> |
| 98 | +<meta property="og:updated_time" content="2018年09月27日T12:41:39.156Z"> |
99 | 99 | <meta name="twitter:card" content="summary">
|
100 | 100 | <meta name="twitter:title" content="iOS之App启动流程">
|
101 | 101 | <meta name="twitter:description" content="本文从以下几个方面来分析iOS系统的APP的启动流程,以及我们在优化启动时间时应该在哪些方面入手 专业术语解释 Mach-O dyld Virtual Memory Page fault Dirty Page &amp; Clean Page main函数之前 dyld2 dyld3 main函数之后 启动时间优化 冷启动 VS 热启动 分析方法 优化实践">
|
@@ -536,7 +536,7 @@ <h3 id="应用程序的状态"><a href="#应用程序的状态" class="headerlin
|
536 | 536 | </tr>
|
537 | 537 | </tbody>
|
538 | 538 | </table>
|
539 | | -<h3 id="冷启动-VS-热启动"><a href="#冷启动-VS-热启动" class="headerlink" title="冷启动 VS 热启动"></a>冷启动 VS 热启动</h3><blockquote> |
| 539 | +<h2id="启动时间检测"><ahref="#启动时间检测" class="headerlink" title="启动时间检测"></a>启动时间检测</h2><h3 id="冷启动-VS-热启动"><a href="#冷启动-VS-热启动" class="headerlink" title="冷启动 VS 热启动"></a>冷启动 VS 热启动</h3><blockquote> |
540 | 540 | <p>如果你刚刚启动过App,这时候App的启动所需要的数据仍然在缓存中,再次启动的时候称为热启动。如果设备刚刚重启,然后启动App,这时候称为冷启动。</p>
|
541 | 541 | </blockquote>
|
542 | 542 | <p>启动时间在小于400ms是最佳的,因为从点击图标到显示Launch Screen,到Launch Screen消失这段时间是400ms。启动时间不可以大于20s,否则会被系统杀掉。</p>
|
@@ -829,7 +829,7 @@ <h3 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</
|
829 | 829 |
|
830 | 830 |
|
831 | 831 |
|
832 | | - <div class="post-toc-content"><ol class="nav"><li class="nav-item nav-level-2"><a class="nav-link" href="#专业术语解释"><span class="nav-number">1.</span> <span class="nav-text">专业术语解释</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#Mach-O"><span class="nav-number">1.1.</span> <span class="nav-text">Mach-O</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#dyld"><span class="nav-number">1.2.</span> <span class="nav-text">dyld</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#Virtual-Memory"><span class="nav-number">1.3.</span> <span class="nav-text">Virtual Memory</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#Page-fault"><span class="nav-number">1.4.</span> <span class="nav-text">Page fault</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#Dirty-Page-amp-Clean-Page"><span class="nav-number">1.5.</span> <span class="nav-text">Dirty Page & Clean Page</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#main函数之前"><span class="nav-number">2.</span> <span class="nav-text">main函数之前</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#dyld3"><span class="nav-number">2.1.</span> <span class="nav-text">dyld3</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#加载动态库"><span class="nav-number">2.1.1.</span> <span class="nav-text">加载动态库</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#Rebase-amp-amp-Bind"><span class="nav-number">2.1.2.</span> <span class="nav-text">Rebase && Bind</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#Objc-SetUp"><span class="nav-number">2.1.3.</span> <span class="nav-text">Objc SetUp</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#Initializers"><span class="nav-number">2.1.4.</span> <span class="nav-text">Initializers</span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#dyld3-1"><span class="nav-number">2.2.</span> <span class="nav-text">dyld3</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#main函数之后"><span class="nav-number">3.</span> <span class="nav-text">main函数之后</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#UIApplication"><span class="nav-number">3.1.</span> <span class="nav-text">UIApplication</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#UIApplication-Delegate"><span class="nav-number">3.2.</span> <span class="nav-text">UIApplication Delegate</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#UIWindow的创建"><span class="nav-number">3.3.</span> <span class="nav-text">UIWindow的创建</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#控制器的创建"><span class="nav-number">3.4.</span> <span class="nav-text">控制器的创建</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#view的创建"><span class="nav-number">3.5.</span> <span class="nav-text">view的创建</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#应用程序的状态"><span class="nav-number">3.6.</span> <span class="nav-text">应用程序的状态</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#冷启动-VS-热启动"><span class="nav-number">3.7.</span> <span class="nav-text">冷启动 VS 热启动</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#启动耗时的测量"><span class="nav-number">3.8.</span> <span class="nav-text">启动耗时的测量</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#pre-main阶段"><span class="nav-number">3.8.1.</span> <span class="nav-text">pre-main阶段</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#main-阶段"><span class="nav-number">3.8.2.</span> <span class="nav-text">main()阶段</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#用Time-Profiler找到元凶"><span class="nav-number">3.8.3.</span> <span class="nav-text">用Time Profiler找到元凶</span></a></li></ol></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#优化启动时间"><span class="nav-number">4.</span> <span class="nav-text">优化启动时间</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#Main函数之前"><span class="nav-number">4.1.</span> <span class="nav-text">Main函数之前</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#dylibs"><span class="nav-number">4.1.1.</span> <span class="nav-text">dylibs</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#Rebase-amp-Bind-amp-Objective-C-Runtime"><span class="nav-number">4.1.2.</span> <span class="nav-text">Rebase & Bind & Objective C Runtime</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#Initializers-1"><span class="nav-number">4.1.3.</span> <span class="nav-text">Initializers</span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#Main函数之后"><span class="nav-number">4.2.</span> <span class="nav-text">Main函数之后</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#UIViewController"><span class="nav-number">4.2.1.</span> <span class="nav-text">UIViewController</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#AppDelegate"><span class="nav-number">4.2.2.</span> <span class="nav-text">AppDelegate</span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#小结"><span class="nav-number">4.3.</span> <span class="nav-text">小结</span></a></li></ol></li></ol></div> |
| 832 | + <div class="post-toc-content"><ol class="nav"><li class="nav-item nav-level-2"><a class="nav-link" href="#专业术语解释"><span class="nav-number">1.</span> <span class="nav-text">专业术语解释</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#Mach-O"><span class="nav-number">1.1.</span> <span class="nav-text">Mach-O</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#dyld"><span class="nav-number">1.2.</span> <span class="nav-text">dyld</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#Virtual-Memory"><span class="nav-number">1.3.</span> <span class="nav-text">Virtual Memory</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#Page-fault"><span class="nav-number">1.4.</span> <span class="nav-text">Page fault</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#Dirty-Page-amp-Clean-Page"><span class="nav-number">1.5.</span> <span class="nav-text">Dirty Page & Clean Page</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#main函数之前"><span class="nav-number">2.</span> <span class="nav-text">main函数之前</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#dyld3"><span class="nav-number">2.1.</span> <span class="nav-text">dyld3</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#加载动态库"><span class="nav-number">2.1.1.</span> <span class="nav-text">加载动态库</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#Rebase-amp-amp-Bind"><span class="nav-number">2.1.2.</span> <span class="nav-text">Rebase && Bind</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#Objc-SetUp"><span class="nav-number">2.1.3.</span> <span class="nav-text">Objc SetUp</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#Initializers"><span class="nav-number">2.1.4.</span> <span class="nav-text">Initializers</span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#dyld3-1"><span class="nav-number">2.2.</span> <span class="nav-text">dyld3</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#main函数之后"><span class="nav-number">3.</span> <span class="nav-text">main函数之后</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#UIApplication"><span class="nav-number">3.1.</span> <span class="nav-text">UIApplication</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#UIApplication-Delegate"><span class="nav-number">3.2.</span> <span class="nav-text">UIApplication Delegate</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#UIWindow的创建"><span class="nav-number">3.3.</span> <span class="nav-text">UIWindow的创建</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#控制器的创建"><span class="nav-number">3.4.</span> <span class="nav-text">控制器的创建</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#view的创建"><span class="nav-number">3.5.</span> <span class="nav-text">view的创建</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#应用程序的状态"><span class="nav-number">3.6.</span> <span class="nav-text">应用程序的状态</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#启动时间检测"><span class="nav-number">4.</span> <span class="nav-text">启动时间检测</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#冷启动-VS-热启动"><span class="nav-number">4.1.</span> <span class="nav-text">冷启动 VS 热启动</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#启动耗时的测量"><span class="nav-number">4.2.</span> <span class="nav-text">启动耗时的测量</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#pre-main阶段"><span class="nav-number">4.2.1.</span> <span class="nav-text">pre-main阶段</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#main-阶段"><span class="nav-number">4.2.2.</span> <span class="nav-text">main()阶段</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#用Time-Profiler找到元凶"><span class="nav-number">4.2.3.</span> <span class="nav-text">用Time Profiler找到元凶</span></a></li></ol></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#优化启动时间"><span class="nav-number">5.</span> <span class="nav-text">优化启动时间</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#Main函数之前"><span class="nav-number">5.1.</span> <span class="nav-text">Main函数之前</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#dylibs"><span class="nav-number">5.1.1.</span> <span class="nav-text">dylibs</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#Rebase-amp-Bind-amp-Objective-C-Runtime"><span class="nav-number">5.1.2.</span> <span class="nav-text">Rebase & Bind & Objective C Runtime</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#Initializers-1"><span class="nav-number">5.1.3.</span> <span class="nav-text">Initializers</span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#Main函数之后"><span class="nav-number">5.2.</span> <span class="nav-text">Main函数之后</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#UIViewController"><span class="nav-number">5.2.1.</span> <span class="nav-text">UIViewController</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#AppDelegate"><span class="nav-number">5.2.2.</span> <span class="nav-text">AppDelegate</span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#小结"><span class="nav-number">5.3.</span> <span class="nav-text">小结</span></a></li></ol></li></ol></div> |
833 | 833 |
|
834 | 834 |
|
835 | 835 | </div>
|
|
0 commit comments