6

我正在運行Instruments Tool(Leaks)並且正在接收QuartzCore庫中的內存泄漏,並且不清楚我的代碼中發生了什麼。通常我可以指出發生泄漏的線路,但是儀器工具並沒有給我任何地方查看這種類型的信息。iPhone/Objective-C - QuartzCore庫中的內存泄漏

在診斷這種泄漏方面,我可以看到哪些其他的東西?

enter image description here

enter image description here

回答

3

首先,嘗試在設備上運行此。有時模擬器會報告設備上不存在的泄漏。

其次,打開堆棧跟蹤(右側邊欄),看看你的代碼可能涉及更高的觸發這個調用,那麼你可以從那裏考慮爲什麼代碼可能會泄漏。

還有一點建議。而不是在那裏玩弄泄漏,切換到ObjectAlloc並使用Heapshot功能 - 如果你知道泄漏的位置,使用heapshot設置基本記憶測量,並且每次你點擊「heapshot」按鈕後,你會在你設定的基線上看到一種「差異」的記憶。解決任何過度保留的問題也可能會解決您的泄漏問題。

+0

泄漏實際上發生在設備上。我會嘗試你的建議並看看堆棧跟蹤。 – fuzz 2011-05-05 05:03:07

+0

好吧,看起來它甚至不會讓我看看棧跟蹤... – fuzz 2011-05-05 05:16:37

+1

添加ObjectAlloc工具。如果沒有標記爲「記錄參考計數」(點擊儀器中的小(i)查看設置),您可能不得不刪除現有的泄漏選擇。再次記錄,並將泄漏檢查時間設置爲兩秒鐘(默認值爲10)。然後看看在記錄泄漏的時間周圍要做什麼分配......也可以嘗試按照泄漏處的內存地址旁邊的箭頭查看是否有堆棧跟蹤。 – 2011-05-05 05:20:06

2

如果您一次只泄漏16個字節,那麼在您的應用中確實不太可能成爲問題。如果泄漏發生在系統框架中,它可能不是你的錯。

+0

我總是覺得很安慰。它似乎總是發生在相同的功能位上,所以我可能會調試我的整個視圖並查看我正在使用的QuartzCore代碼... – fuzz 2011-05-05 05:12:43