<dl id='ldwfb'></dl>
<ins id='ldwfb'></ins>

  • <acronym id='ldwfb'><em id='ldwfb'></em><td id='ldwfb'><div id='ldwfb'></div></td></acronym><address id='ldwfb'><big id='ldwfb'><big id='ldwfb'></big><legend id='ldwfb'></legend></big></address>
    <span id='ldwfb'></span>

  • <tr id='ldwfb'><strong id='ldwfb'></strong><small id='ldwfb'></small><button id='ldwfb'></button><li id='ldwfb'><noscript id='ldwfb'><big id='ldwfb'></big><dt id='ldwfb'></dt></noscript></li></tr><ol id='ldwfb'><table id='ldwfb'><blockquote id='ldwfb'><tbody id='ldwfb'></tbody></blockquote></table></ol><u id='ldwfb'></u><kbd id='ldwfb'><kbd id='ldwfb'></kbd></kbd>
  • <i id='ldwfb'><div id='ldwfb'><ins id='ldwfb'></ins></div></i>
    <fieldset id='ldwfb'></fieldset>

      <code id='ldwfb'><strong id='ldwfb'></strong></code>
      <i id='ldwfb'></i>

            iOS内存分析下-前台内存耗尽闪退(FOOM)

            • 时间:
            • 浏览:79
            • 来源:124软件资讯网

              Jetsam模子

              iOS使用的是低内存处置惩罚机制Jetsam  ,这是一个基于优先级行列的机制 。相关的探讨推荐这篇文章

              Jetsam可以简朴的抽象为:前台应用法式  ,在触发某个或多个条件时 ,触发系统事务 ,被系统kill掉  。而OOM也就是由于触发了内存相关的系统事务  ,被系统kill掉了  。

              Memory Footprint

              Footprint是苹果推荐的内存怀抱及优化的指标 。而Memory Footprint的值到达Limit line时  ,就会触发内存忠告 ,并进一步导致OOM ,相关可以参考这条Stack Overflow 。以下是摘抄的部门OOM时的Memory Footprint Limit Line  。

              device: (crash amount/total amount/percentage of total)

              iPad1: 127MB/256MB/49%
              iPad2: 275MB/512MB/53%
              iPad3: 645MB/1024MB/62%
              iPad4: 585MB/1024MB/57% (iOS 8.1)
              iPad Mini 1st Generation: 297MB/512MB/58%
              iPad Mini retina: 696MB/1024MB/68% (iOS 7.1)
              iPad Air: 697MB/1024MB/68%
              iPad Air 2: 1383MB/2048MB/68% (iOS 10.2.1)
              iPad Pro 9.7": 1395MB/1971MB/71% (iOS 10.0.2 (14A456))
              iPad Pro 10.5”: 3057/4000/76% (iOS 11 beta4)
              iPad Pro 12.9” (2015): 3058/3999/76% (iOS 11.2.1)
              iPad Pro 12.9” (2017): 3057/3974/77% (iOS 11 beta4)
              iPod touch 4th gen: 130MB/256MB/51% (iOS 6.1.1)
              iPod touch 5th gen: 286MB/512MB/56% (iOS 7.0)
              iPhone4: 325MB/512MB/63%
              iPhone4s: 286MB/512MB/56%
              iPhone5: 645MB/1024MB/62%
              iPhone5s: 646MB/1024MB/63%
              iPhone6: 645MB/1024MB/62% (iOS 8.x)
              iPhone6+: 645MB/1024MB/62% (iOS 8.x)
              iPhone6s: 1396MB/2048MB/68% (iOS 9.2)
              iPhone6s+: 1392MB/2048MB/68% (iOS 10.2.1)
              iPhoneSE: 1395MB/2048MB/69% (iOS 9.3)
              iPhone7: 1395/2048MB/68% (iOS 10.2)
              iPhone7+: 2040MB/3072MB/66% (iOS 10.2.1)
              iPhone X: 1392/2785/50% (iOS 11.2.1)


              OOM触发的其他事务

              这个是本文想要讨论的重点  。我们已知 ,Compressed Image是Dirty Memory ,也就是在Memory Footprint中的  。在最新的Xcode 9.3升级后  ,发现某些特殊的图片  ,在加载后并不会引起Memory Footprint的升高 ,且不会受到Memory Footprint Limit Line的限制  。

              好比 ,以iPhone 6+为例  ,通常Memory Footprint值到达645MB时 ,就会crash掉  ,同时Xcode的console中有memory issue的提醒  。然而  ,当我们加载特殊的图片时  ,凭据图片加载内存盘算  ,当其加载到1100MB左右时  ,才会crash ,而且同样在console中有memory issuer的提醒 。简要的说: