2010-01-28 52 views
85

我正在使用Instument的ObjectAlloc工具來試圖瞭解我的應用程序(iPhone)在做什麼以及它在何時何地執行它的內存。樂器ObjectAlloc:實時字節和整體字節的解釋

我真的很喜歡這些統計信息的基本解釋:

  • 直播字節
  • 生活

  • 暫時性

  • 總字節數

當我試圖找出我有多少記憶應用程序正在使用,我是看看實時字節還是總字節?這是否包括泄漏的內存?什麼是過渡對象?

感謝

+6

列有簡短的描述,當你將鼠標懸停在他們的頭。 – 2012-02-09 15:44:38

回答

109

ObjectAlloc軌道中的所有內存分配和釋放在你的程序運行的時間。

Living bytes, or Net bytes是您的應用程序在您選擇時間線時使用了多少內存。這將包括泄漏的內存,因爲泄漏的內存永遠不會被釋放。

#Living是發生了多少個特定大小/對象類型的分配(仍然分配)。這在查找泄漏時非常有用。例如,如果您重複執行某個操作(如進入模式視圖控制器),並且您看到對象的#Living每次增長量相同,則可能是泄漏了這些對象。然後,您可以通過深入分析並查看分配對象的確切代碼行來確認,甚至可以查看每個對象創建的時間索引。

Overall bytes包括已被釋放的存儲器。跟蹤該數字以便進行性能優化是很有用的,但如果您只是想要查看當前內存佔用情況或查找泄漏情況,則不是。

+3

你會試圖根據總體字節來優化什麼?試圖保持這個數字小意味着更好的性能? – 2011-10-25 05:17:13

+4

是的,正確的。性能問題的一個常見原因是意外地多次運行相同的代碼。分配工具可以是注意的好方法。例如,即使額外的物體沒有被泄漏,你也許會說,「爲什麼我要製造3個物體,應該只有一個!」 – 2012-02-24 17:33:15

+0

@KenAspeslagh - 讓我有點困惑...讓我們舉個例子吧。我在分配中看到:一次不超過200KB,但總體字節數近200MB。這是否意味着我的應用程序需要太多並會得到內存警告?或者因爲Live只有200KB我很好走? – 2012-05-11 11:45:45

18

來自apple文檔的統計說明。 Link to the document

enter image description here

enter image description here

+0

你也可以放棄鏈接到這個文檔? – shoumikhin 2013-01-11 13:33:15

+1

@shoumikhin Plz檢查答案編輯 – 2013-01-12 23:13:32