我正在運行一個測試,以確保通過在10秒長的while循環中包裝相關代碼部分來正確釋放對象。我在調試和發佈配置中運行了測試,結果不同。在Release和Debug配置之間會導致不同的ObjC/ARC內存行爲?
調試(構建在模擬器&執行命令):
推出(構建在設備&運行,並利用簡介儀表):
的CPU峯值表示創建對象的位置,以及d被毀壞(每次運行有3次)。請注意,如何在Debug版本中,在繁忙循環期間內存使用量逐漸增加,然後在較高基本級別稍微穩定下來,這發生在每次循環迭代時。在發佈版本上,它始終保持不變。在3次運行結束後,Debug版本的內存使用水平顯着高於Release版本。 (CPU峯值在時間軸上相對於彼此偏移,但這只是因爲我按下了在不同時間觸發循環的按鈕)。
有問題的內部循環的代碼非常簡單,基本上是由一串正確配對malloc
和free
報表以及一堆retain
和release
電話(ARC的禮貌,也驗證爲正確配對)的。
任何想法是什麼造成這種行爲?
相關:http://stackoverflow.com/questions/17208685/different-block-behavior-between- debug-and-release-configuration –