2010-10-28 76 views
3

我有經常死機設備總覽上的應用程序,但不在模擬器上,因此任何模擬器調試戰術(MallocStackLogging例如)不是一個選項。我通常在控制檯中是這樣的:iphone/ipad的故障診斷設備崩潰由於存儲器

Received memory warning. Level=1 
Received memory warning. Level=2 
Program received signal: 「0」. 
Data Formatters temporarily unavailable, will re-try after a 'continue'. (Unknown error loading shared library "/Developer/usr/lib/libXcodeDebuggerSupport.dylib") 

我的問題是,在這一點上,是有什麼我可以做,以找出究竟是什麼原因造成的車禍嗎?顯然這是一個記憶問題,但我很難找到原因。這是泄漏嗎?分配太多?除了「使用性能工具運行>泄漏」之外,還有什麼可以幫助我們追蹤問題嗎?

+0

爲什麼你不想使用泄漏工具?畢竟這是它的目的。 – 2010-10-28 18:10:52

+0

我正在使用泄漏工具。我的問題是如果有任何其他解決內存問題的方法。還是每一個可能的內存問題都可以被泄漏檢測和顯示? – sol 2010-10-28 18:24:00

+1

不,*泄漏*不能檢測到所有可能的內存問題。它會標記一些常見問題,但僅此而已。使用* Allocations *查看更大的圖片。 – 2010-10-28 18:29:10

回答

1

使用工具來查看你的記憶在哪裏。

我開始與性能工具運行 - >分配

而且,我發現泄漏是相當保守的。我沒有看到從泄漏一個假陽性,但我發現很多泄漏泄漏未檢測到。

+1

那麼我在配置中尋找什麼?它墜毀與這些統計信息:實時字節:23.13 MB,#活動:85455,#Transitory:3856520,總字節數:475.43 MB,總體:3941975.這些不好?似乎它在24-25MB的Live Bytes中徘徊而不會崩潰一段時間。 – sol 2010-10-28 18:44:37

+0

首先,確保你在*設備上發佈*。觀看*實時字節*。 25MB非常接近最大值。您可能需要深入瞭解並找出使用所有內存的內容。 – 2010-10-28 18:51:58

+0

實時字節只有10 MB左右時,爲什麼會收到低內存警告?我可以告訴我得到了警告,因爲viewDidUnload在某些視圖控制器上被調用。 – sol 2010-10-28 19:34:02

3

另一個好的工具是靜態分析儀。只需在Build菜單中點擊Build and Analyze,它就會顯示出您的許多內存泄漏和大部分內存泄漏之間的某處。

檢查出Apple Developer Document關於如何閱讀的結果更多的解釋。