你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS app內存剖析套路

iOS app內存剖析套路

編輯:IOS開發綜合

在這裡將為大家引見的是IOS app內存剖析套路的相關引見,詳細代碼請看下文

IOS app內存剖析套路 Xcode下檢查app內存運用狀況有2中辦法: Navigator導航欄中的Debug navigator中的Memory Instruments 一.Debug navigator中的Memory

此辦法是檢查內存最復雜直接無效的辦法,真機調試時,經過Debug navigator中Memory檢查app內存,入口如圖

IOS app內存分析套路

依據這個值檢查app內存占用,這個內存是以後app占用的總內存,是堆棧內存、虛擬內存(OpenGL占用的顯存算在虛擬內存中外面)的總和。

二.Instruments

啟動Instruments的辦法是,Product->Profile,經過漫長的編譯時間後,呈現Instruments界面,下圖

iOS app內存分析套路

Instruments中,可以剖析內存的工具有Activity Monitor,Allocations,Leaks。

(1)Leaks

Leaks檢測內存洩露的工具,很有用。Leaks運轉中,看到上面這個紅叉叉就表示有內存洩露了

iOS app內存分析套路

(2)Allocations

Allocations是檢測堆棧內存的,上面的VM tracker檢測虛擬內存。Allocations運轉起來如下圖

iOS app內存分析套路

Allocations永遠比Debug navigator Memory中顯示的內存要小,就是由於Allocations中沒有統計虛擬內存。iOS把OpenGL占用的顯存算作虛擬內存的一局部,下圖參考自

When is a Leak not a Leak? Using Heapshot Analysis to Find Undesirable Memory Growth

iOS app內存分析套路

局部malloc出來的內存也算在虛擬內存中,下圖參考自A look at how malloc works on the Mac

iOS app內存分析套路

(3)Activity monitor

Activity monitor看手機全體內存狀況的,這裡的顯示app內存值和Debug navigator中的Memory顯示的值是一樣的

iOS app內存分析套路

其他: 1. app最多能占用多少內存不閃退

占用機器內存的一半左右就會閃退,和零碎版本、後台順序數有關。

iOS app內存分析套路

不同渠道對內存有不同的要求,例如如下某渠道

iOS app內存分析套路

2. iOS app為什麼內存沒有洩露,內存卻降不上去

eg: 創立大約20個哥布林spine動畫,此時內存占用46M,然後釋放掉,內存占用居然還是46M,以為是spine有內存洩露,Leaks檢測沒有發現內存洩露。重復加載釋放20個哥布林,內存都沒有超越48M,但是為毛內存沒有下降,而是維持在46M左右?

iOS app內存分析套路

由於(1)圖片參加了TextureCache,占用了局部內存(2)malloc出來的一局部內存算到了VM(虛擬內存)中,為了下次malloc速度更快,這局部內存雖然調用了free,但iOS零碎仍然沒有將其回收。這就是下面說的局部malloc出來的內存也算在虛擬內存中。這可以在mac模仿器上測試,malloc一塊4M的內存,然後free之,內存不降

3. 怎樣停止app內存測試

(1) 用Leaks檢測內存洩露(2) 重復進入加入一個功用頁面,在Debug navigator中看內存是不是繼續上升。內存繼續上升闡明內存漏了。

通本學習您是不是更理解ios開發了呢.感激關注本站

【iOS app內存剖析套路】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved