[英]Tips for finding and debugging abandoned memory and heap growth
我最近觀看了WWDC 2010視頻之一:第311節-使用儀器進行高級內存分析。 鏈接在這里 。
視頻中有一個有趣的示例,用於查找“廢棄的內存”。 他們說,調試通常比泄漏更重要,但可能更困難。
放棄的內存定義為“不再使用的可訪問已分配內存”。
泄漏定義為“無法再訪問的已分配內存”。
查找“廢棄內存”的主要方法是使用“分配”工具進行堆快照。
但是,在確定我已經放棄了代碼中的內存之后,我發現實際上很難確切地知道它的來源。
我正在尋找一些不錯的技巧或資源來查找“廢棄的內存”。
謝謝!
在Instruments中,您可以為堆快照標識的任何對象獲取調用堆棧。 屏幕截圖:
因此,這里是一個人為的情況,我每次用戶點擊按鈕時都會分配一個1MB的NSMutableData。 在中間底部的窗格中,我有4個堆快照,並且展開了一個以顯示自上次堆快照以來已創建但尚未釋放的對象。 我突出顯示了1.25MB的“非對象”分配,在右窗格中,它向我顯示了發生此分配的確切調用堆棧。 關於右側面板的一個技巧是底部的滑塊-它控制着消除堆疊框架。 如果要查看所有堆棧框架,請將其一直拖動到右側。 灰色框架是您沒有源代碼的框架,非灰色框架是您的代碼(或同時具有符號和源代碼的代碼)。(此外,如果您沒有看到右,單擊工具欄中的“查看”按鈕。)您還在尋找其他信息嗎?
總結bbum的精彩博客文章 :
在Instruments中查看分配時,可以單擊右箭頭按鈕查看該實例的事件歷史記錄,包括分配,保留,釋放和自動釋放的所有位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.