2012-06-21 53 views
0

當我使用Instruments「配置」我的應用程序時發現了一些內存泄漏。有些泄漏很明顯,很容易修復,但有些不是。在樂器中顯示的一些泄漏日誌真的困擾着我。例如: enter image description here應用程序是否有可能需要零內存泄漏?

我甚至不知道我的代碼的哪一行叫做這些場景後面的「陌生人」。我怎樣才能解決這些泄漏?這是從我的代碼泄漏嗎?從框架?或者只是一個虛假的報告?

然後我的問題是:

答:是否有可能解決所有的內存泄漏的錯誤?其中一些真的很難處理。而且你甚至不能說它是來自你的代碼還是來自框架的錯誤。

B:是否有必要修復所有內存泄漏?幾個字節泄漏可能不會影響任何內容而你爲解決這個問題所做的努力可能會比你得到的花費更多。

回答

4

答:是否可以修復所有內存泄漏錯誤?其中一些真的很難處理。而且你甚至不能說它是來自代碼 還是來自框架工作的錯誤。

是的,這是可能的,但請注意一些時候你從分析得到的結果不要你一定要泄漏,有時它們是還沒有被自動釋放的對象,有時它們不是你的。

B:是否有必要修復所有內存泄漏?幾個字節泄漏可能對 沒有影響。你付出的努力修復它可能會比你得到更多的花費 。

如果你的意思是你的應用程序不被拒絕,那麼沒有那不是必要的,不要過度勞累,並強調自己在一些字節,你似乎無法找到,不要去搜索了幾個字節的已在這裏和那裏丟失,只有當你注意到你的應用程序真的在泄漏時纔開始尋找泄漏。

4

是的,這是可能的,是的你應該。

從長遠來看泄漏不好,特別是如果你的應用程序運行在後臺。 如果泄漏位於第三方庫中,請通知製造商修復它。或者如果你有代碼修復你的自我。 泄漏你自己的代碼可以很容易地修復,所以這樣做。

+2

理想情況下,是的。但這些工具並不完美。通常會出現假陽性和假陰性......然後,偶爾會出現系統泄漏。我會說「永遠盡你所能」 –

+1

沒錯,核心框架中的泄漏並不是真正可以解決的。但是在任何時候都應該避免泄漏自己的代碼。 – rckoenes

0

如果您的應用程序運行很長時間(考慮作爲某個服務器),那麼它會頻繁地頻繁發出2個字節的泄漏。在某個時間點,你的堆將會充​​滿無限的泄漏。這可能會導致應用程序中的malloc失敗。所以修復內存泄漏對於長時間運行的應用程序來說更爲重要。而且還有可能修復所有的內存泄漏。

如果應用程序在短時間內運行意味着一旦應用程序存在,所有資源將被操作系統釋放,此時泄漏的內存也將被釋放。