美文网首页
ios内存告警的排查

ios内存告警的排查

作者: megar | 来源:发表于2016-07-05 15:41 被阅读245次

    jetsam就像linux的oom,当物理上内存低的时候,操作系统根据某些策略,去找到一个进程,并且将这个进程

    杀死以释放更多的内存,这个进程一般就是占用内存最多的,在ios上选择的是占用虚拟内存页最多的进程,既然知道是

    占用虚拟内存最多的进程,那么xcode提供的工具就派上用场了。

    VSS = RSS + LSS + SwSSWhere:

    VSSVirtual Set Size, as reported by top, ps(1), and others

    RSSResident Set Size - the actual RAM footprint of the process. Also shown in top(1), ps(1), etc

    LSS"Lazy" Set Size - Memory which the system has agreed to allocate, but not yet allocated

    SwSS"Swap" Set Size - Memory which was previously in RAM, but has been pushed out to swap.

    In iOS , this is always 0

    xcode的instrument的工具 allocations 或者 leak都可以,以allocation为例

    找到占用多的前几名进程,点击旁边的E图标,可以看到线程的堆栈,这个工具真是太牛鼻了,仔细review下代码吧,问题就出在你的设计和代码中。

    最后爆下我排查的这个问题:

    原因是每捕获一条http数据,写入沙盒,第二个请求又把第一个请求读出来,再写入沙盒。。。。。如果是第500个,那就需要把前面499个读出来到内存,然后再写入沙盒,牛鼻的人写的代码就是不一样啊,io狂高,写不到磁盘,导致内存迟迟无法释放,而且随着采集数据的增多,要很久很久才能释放出内存,结果就是触发 low memory warning ,被系统杀死了。

    相关文章

      网友评论

          本文标题:ios内存告警的排查

          本文链接:https://www.haomeiwen.com/subject/ofcndttx.html