2013-07-31 57 views
0

我們有一個單觸式應用程序,其中包含許多UIImageUIView對象。當我們在iPad(Version1)中安裝應用程序(IPA)文件時,然後開始工作,如果我們繼續連續工作10到20分鐘,則由於內存不足而崩潰。單觸式應用程序中的內存問題

我們還試過Intruments配置文件來跟蹤堆分配,但它 顯示每個屏幕導航的內存不斷增加。我們 處置了所有分配的對象viewDidDisappear並且即使 內存沒有減少。我們也嘗試通過GC.Collect()手動強制垃圾收集垃圾 收集垃圾,但它也不是 工作。

這是單聲道觸摸中的錯誤嗎?或者我們錯過了內存管理技術?

,並請幫我解決了內存不足警告的問題..

感謝

+0

1.您使用ARC嗎? 2.您是否將應用程序包中的圖像從Web服務器中獲取? 3.您如何維護View層次結構? –

+0

我不知道您的問題的具體情況,但本文將介紹內存最佳實踐。 http://docs.xamarin.com/guides/cross-platform/application_fundamentals/memory_perf_best_practices。有些可能只適用於xamarin的gc,但至少有一半是相當一般化的。 – ZeroPhase

回答

3

UIImage工作UIImageView你應該換你的代碼到using陳述或手動處理圖像,如果你不需要他們了。原因是UIImage的託管版本基本上只包含4個字節,一個指向保存圖像數據的內存區域的指針。 圖像本身是非託管的。這意味着GC沒有壓力,因爲它只能看到託管的世界。 如果因爲需要將所有圖像數據保存在內存中而無法執行此操作,則需要重新考慮設計。 iOS設備的RAM容量非常有限,只是因爲您可以將.NET的全部功能應用於設備,並不意味着您也應該這樣做。努力成爲一個好記憶的公民。

using(UIImage image = UIImage.FromFile(...)) 
{ 
    // Process the image. 
} 

// Here, the image data will be freed. 
+0

雅,我們試過使用塊。 – sivaprakash