2011-12-19 64 views
1

我正在分析一個iOS應用程序來檢查與Instruments.I選擇分配和/或泄漏檢查內存泄漏。未知的內存泄漏

當應用程序運行時,All Allocations增長到1.3MB。當我點擊一個按鈕後,顯示一個選擇器,然後選擇一個項目並刪除選擇器,All Allocations就會長大。我檢查了沒有明顯的內存泄漏,因爲沒有紅條。

有什麼線索嗎?我發現有很多未知的Malloc 16字節,... Malloc 32字節,...但沒有有用的信息讓我繼續追蹤。

有沒有其他方法可以解決這些問題?

+0

總存儲將增長隨着時間的推移,直到你達到「穩定狀態」,由於有更多的意見,圖像緩存,等你有問題,不過,如果存儲不斷每次重複的時間越來越多同樣的行動。 –

+0

我說了一些代碼來最小化ViewController的活動。現在按下一個按鈕來分配並添加一個UIPickerView到self.view。如果按下相同的按鈕,UIPickerView將從self.view中刪除並釋放。我一直在服用HeapShot。我發現仍然有堆增長(有時,4xx字節,2K字節...) – SkyEagle888

回答

1

使用Heapshot查找內存creap,請參見:bbum blog

基本上有方法是運行儀器分配工具,取heapshot,運行代碼的直覺和另一heapshot重複3或4次。這將指示在迭代過程中分配並未釋放的內存。

爲了弄清楚結果是否披露了個別分配。

如果你需要看到保留,發佈和自動釋放出現一個對象使用儀器:在儀器

運行,在設定「記錄的引用計數」關於分配(你必須停止記錄設置的選項)。導致選擇器運行,停止錄製,在那裏搜索ivar(datePickerView),向下鑽取,您將能夠看到所有保留,發佈和自動釋放發生的位置。

enter image description here