內存泄漏檢測工具
回答
運行在Xcode工具有一個專門打電話Leaks
和像以前的海報說,運行它的最簡單的方法是直接從Xcode的:
運行 - >啓動與性能工具 - >泄漏
它在檢測內存泄漏方面看起來非常好,對於像我這樣的Non-C Head來說,很容易找出。
ObjectAlloc和MallocDebug應該對你有幫助。如果您安裝了整個SDK,可以在Developer-> Applications-> Performance Tools中找到它們。
他們的名字給你一個很好的線索,就其功能而言,OA跟蹤對象的創建,MA是一個通用的內存泄漏工具。
我還沒有嘗試過iPhone開發,但我必須相信他們也會在那裏工作。從在Xcode 6 Product
菜單啓動蘋果的儀器工具Instruments User Guide
選擇Profile
:
假設你已經註冊了ADC iPhone開發者網站,這裏的鏈接可循。 (該應用程序位於Xcode應用程序的包內容中:/Applications/Xcode.app/Contents/Applications/
)
商業替代方案是
OmniObjectMeter。
(由奧姆尼集團已停產)
OmniObjectMeter現在可以免費下載。 – Tony 2011-03-25 10:50:18
是否有關於如何使用Apple的樂器的教程? – 2011-06-19 08:56:28
@nute:看看蘋果網站上的WWDC視頻。 – titaniumdecoy 2012-02-24 17:14:01
您可以通過menu -> run -> start with performance tool -> ...
的Clang Static Analyser
是非常適合在C,C++和Objective-C代碼查找錯誤:
當使用rustyshelf's solution
確保測試在iPhone上,而不是在模擬器上。內存使用情況顯着不同。
做了一個總結的主內存泄漏的工具:iphone-essential-performance-tools-list
難道蘋果的Xcode開發環境提供了內存泄漏檢測任何工具?
我對適用於iPhone SDK的工具特別感興趣。
是的。蘋果稱它們爲「樂器」(不僅僅是記憶工具)。
請參閱Apple的Introduction to Instruments User Guide
。具體見Locating Memory Issues in Your App
。它提供瞭如何使用面向內存的跟蹤模板的示例。
這裏是鏈接使用儀器從Xcode中來檢測內存泄漏/你表現IOS/MAC應用 Steps to run instrument from Xcode
試試這個也是,一個簡單的教程,開始在Xcode insturments
內存泄漏工具:http://www.raywenderlich.com/2696/
基礎:http://www.raywenderlich.com/23037/how-to-use-instruments-in-xcode
步驟1.挑選分配儀器
- 選擇用於分配的性能測試模板:
- 在主儀器界面,單擊虛擬機跟蹤器(如果存在),然後按Delete鍵,因爲您不需要該特定儀器:
- 我做的第一件事情就是把我的檢查範圍來衡量我的基線總持續字節。該持久字節號位於分配摘要的正下方。
- 然後,我將我的右檢查範圍內,我已經通過應用程序再次運行,回來給我們的根點。在這裏,你可以看到內存大致相同。所以,通過再做幾次這樣的事情,看到你的記憶回到我們的基線,你可以假設沒有重大的記憶問題。
- 看最大的分配,然後點擊右向箭頭。很多時候在你點擊的內容中會有分配,其中很多對你沒有意義。
- 在突出顯示點擊的箭頭後不同分配,繼續尋找正確的面板上的擴展的細節。最終你會遇到一些粗體的文本,這會導致項目中的實際代碼,告訴你這個問題可能是什麼。
- 如果雙擊堆棧跟蹤大膽的項目之一,它會帶你到實際的代碼(假設你跑的分配你擁有的應用程序)。
有一個關於這個觀點,一個是右側的大多是黃色的標籤,以顯示你很多有用的東西到底有多少內存每個方法調用正在接受。每個應用程序是不同的,所以你的開發者,有權決定是否加亮的方法是一個問題,有些東西你可以優化,或者您的應用程序只是一個不可避免的一部分。
在我的情況下,變量的UIColor的東西,是持久的,在我們的應用中使用,因此,在我們的應用程序的生命可以接受的。
通過點擊右上角的加號按鈕,你可以添加更多的儀器不同類型的測試,但我不會在本教程中覆蓋它們。
第2步:設置您的儀器設置
運行任何分析之前,有你需要做的幾件事情。首先,您需要插入安裝了應用程序的iOS設備。它必須是物理設備,因爲iOS模擬器仍然是模擬器,可能無法準確地表示應用程序中的內存使用情況,或者應用程序在內存壓力下的表現。
來挑選你的目標,單擊頂部附近我的電腦,將鼠標懸停在您的設備,然後選擇您的應用程序從子菜單:
其次,有一個面板,您可以更改您將查看的分配類型的設置。除了確保創建&持續泡沫被檢查,你沒有太多需要事先做。
步驟3.按記錄運行儀器
一旦按下左上角錄製按鈕,您的應用程序將啓動您的設備上,並且儀器將開始圖表你的分配。您需要在此處執行的操作是通過您的應用程序執行的,重點討論可能的問題區域,以查看是否有更多的內存分配而不是釋放。這可能意味着做了很多重複的任務,但是稍後你會感謝你自己。
您應該看到這樣的事情:
我建議通過您的應用程序運行一次,以獲得一個穩定的點在內存中,以便你有一個很好的基礎,這將使任何增加明顯。當您滿意時,您有足夠的數據進行測試,請按左上方的停止按鈕。
步驟4.分析
實際設置的檢查範圍,使用鍵盤快捷鍵命令<左檢查範圍和命令>爲正確的檢查範圍。在我們的應用程序中,我們的基線大約爲20MB。
有分析這個數據,我將不包括在這裏,但要注意,有方式來查看和分析數據的整體下拉菜單中選擇不同的方式。
第5步標誌代
如果你不喜歡對付檢查的範圍爲多,有一個叫馬克生成功能。儀器的右側面板上有一個按鈕。
該按鈕將根據在檢查線上是標記儀器的時間軸上的點。它是這樣做的,以便跟蹤自上一個商標以來的所有分配,或者如果沒有其他商標則從頭開始。當你運行的是分配工具可以標記代或已經停止運行後,如本例:
步驟6.檢查出來的堆棧跟蹤
的最後一件事以覆蓋正在看堆棧跟蹤。對於這一點,你要設置你的檢查範圍,以突出顯示所有的分配,然後看看統計數據視圖,確保創建&持續泡在右側面板中選擇。在統計視圖中,確保持久字節從最高到最低排序。這裏有很多分配的,它可以是很難理解到底是怎麼回事,因爲他們中的很多都是系統分配。
去深
- 1. 內存泄漏沒有檢測到CRT內存泄漏檢測
- 2. 檢測Android內存泄漏
- 3. 內存泄漏檢測器
- 4. VisualVM內存泄漏檢測
- 5. 檢測Ruby內存泄漏
- 6. Tomcat7檢測內存泄漏
- 7. 檢測內存泄漏
- 8. 檢測TWebModule內存泄漏
- 9. Android內存泄漏工具?
- 10. iPhone內存泄漏工具
- 11. linux內核模塊中內存泄漏檢測工具
- 12. 泄漏性能工具沒有檢測到明顯的內存泄漏
- 13. 分配屬性時泄漏內存工具無法檢測到泄漏,因此泄漏是否存在?
- 14. 檢測內存泄漏Wp7上的工具
- 15. 的valgrind(MEMCHECK)工具因此未檢測內存泄漏
- 16. 任何工具來檢測哪個DLL泄漏內存?
- 17. Cygwin中的內存泄漏檢測工具
- 18. Xcode 4中的內存泄漏檢測工具
- 19. 內存泄漏檢測和分析工具
- 20. G ++多平臺的內存泄漏檢測工具
- 21. 使用chrome檢測內存泄漏
- 22. 如何檢測j2me內存泄漏?
- 23. 用Valgrind檢測內存泄漏
- 24. Valgrind在fclose檢測到內存泄漏()
- 25. 如何檢測內存泄漏
- 26. 檢測到內存泄漏! CwinThread
- 27. 檢測到的內存泄漏
- 28. Windows API調用內存泄漏檢測
- 29. DLL中的內存泄漏檢測
- 30. 用Visual Studio 2010檢測內存泄漏?
如何安裝整個SDK? – 2012-06-06 04:29:56