2015-10-12 77 views
11

當我運行在Xcode我的應用程序,很顯然,我有內存泄漏:Xcode中顯示內存泄漏,但儀器不

enter image description here

當我提出一個自定義視圖控制器的內存增加,但當我解僱它時,它不會退縮。

所以我也使用儀器的配置工具的檢查,但講述了一個不同的故事:

enter image description here

正如你可以看到,儀器顯示尖峯當我提出那個視圖控制器,但內存使用量降回之前的等級被解僱。

我檢查了我的代碼至少15次,我個人無法找到任何內存泄漏,因此同意儀器。我還實施了在我所有的對象會得到分配,像這樣的deinit功能:

deinit { 
    print("Deinnited \(id)") 
} 

並打印到控制檯如預期中的所有對象。

可能會發生什麼?我使用:

  • 的iOS 9.0
  • 的XCode 7.0版(7A220)
  • 雨燕2.1

無論是對運行和配置文件的模式是在 「調試」

+0

只是檢查,但你如何駁回意見?還有空閒時間嗎?我發現樂器往往只顯示軟件方面。它不會告訴你那只是沒有清理乾淨的內存。如果沒有空閒時間,操作系統無法清理內存。你有單身嗎?或共享實例進行兌現?可能是一個強大的參考週期。嘗試設置的東西變弱。只是拋出一些想法...... –

+0

如果你多次重複打開關閉,你會發現Xcode的內存消耗正在增加嗎? – Darko

+0

@達科是的。我看到Xcode中的內存消耗正在增加,但不是在樂器上。 –

回答

3

多後研究Google和其他論壇,這似乎是XCode的一個缺陷。

+0

從7.2.1版本開始,這仍然是Xcode中的一個錯誤。 –

2

更多的工具使用經驗後更新以前的文字。

enter image description here

使用儀器在Xcode 7.2.1最近的一些實驗後,我注意到泄漏圖表並不總是工作。在殺死儀器和模擬器的過程之後,再次運行......圖表出現了。似乎存在間歇性問題,尚未找到原因。

enter image description here

+0

這並沒有爲我揭示這個問題。我能夠使用Leaks個人資料模板進行個人資料分析,並發現泄漏事件並未發生,因爲我一直在通過每次通過的方式繼續進行泄漏檢查。 Xcode 7.x的內置內存分析器確實有些不妥。儀器顯示「持續字節」在應用程序的整個生命週期中保持穩定,而「總字節數」持續增長。我的猜測是他們在Xcode中使用了錯誤的字段,因爲這個數字非常接近儀表分析時顯示的「總字節數」值。 –

+0

經過最近在Xcode 7.2.1中使用儀器的實驗後,我注意到泄漏圖並不總是工作。在殺死儀器和模擬器的過程之後,再次運行......圖表出現了。似乎存在間歇性問題,尚未找到原因。 –

5

這是一個非常惱人的Xcode錯誤或者一個功能:)如果你從蘋果的角度看它。

我今天遇到它,這裏是如何解決它。

  1. 按你設置方案(旁邊的xcode停止按鈕)應用程序的名稱

  2. 選擇「編輯計劃」

  3. 選擇「運行」(彈出左側-up窗口)

  4. 選擇 '選項'(彈出窗口的頂部)

  5. 取消選中「ENABL e backtrace recording'(最後一個選擇需要向下滾動)

缺點是,如果您崩潰,回溯將被禁用。所以我想你想根據你想要關注的東西切換那個開關。

在'profile'方案中,回溯未啓用,因此在使用調試導航器(運行方案)時只看到內存泄漏,而在儀器(配置文件方案)中看不到內存泄漏。

/Anders。

+0

該死的......非常感謝@Andres Cedronius – user1872384