jetsam就像linux的oom蚯嫌,當(dāng)物理上內(nèi)存低的時(shí)候拢操,操作系統(tǒng)根據(jù)某些策略渠概,去找到一個(gè)進(jìn)程茶凳,并且將這個(gè)進(jìn)程
殺死以釋放更多的內(nèi)存,這個(gè)進(jìn)程一般就是占用內(nèi)存最多的播揪,在ios上選擇的是占用虛擬內(nèi)存頁(yè)最多的進(jìn)程贮喧,既然知道是
占用虛擬內(nèi)存最多的進(jìn)程,那么xcode提供的工具就派上用場(chǎng)了猪狈。
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為例
找到占用多的前幾名進(jìn)程,點(diǎn)擊旁邊的E圖標(biāo)雇庙,可以看到線程的堆棧谓形,這個(gè)工具真是太牛鼻了,仔細(xì)review下代碼吧疆前,問題就出在你的設(shè)計(jì)和代碼中寒跳。
最后爆下我排查的這個(gè)問題:
原因是每捕獲一條http數(shù)據(jù),寫入沙盒竹椒,第二個(gè)請(qǐng)求又把第一個(gè)請(qǐng)求讀出來童太,再寫入沙盒。。书释。翘贮。。如果是第500個(gè)征冷,那就需要把前面499個(gè)讀出來到內(nèi)存择膝,然后再寫入沙盒誓琼,牛鼻的人寫的代碼就是不一樣啊检激,io狂高,寫不到磁盤腹侣,導(dǎo)致內(nèi)存遲遲無(wú)法釋放叔收,而且隨著采集數(shù)據(jù)的增多,要很久很久才能釋放出內(nèi)存傲隶,結(jié)果就是觸發(fā) low memory warning ,被系統(tǒng)殺死了饺律。