Windows Phone 7 90M記憶體限制問題及設計原則

來源:互聯網
上載者:User

標籤:

  一. 在wp7中,程式所使用記憶體不能超過90M, 否則會自動結束。

  二. 如果一個page沒有被釋放,那麼它所包含的所有控制項資源都不會被垃圾收集.

  在wp7中操作映像資源是很費記憶體的,而我們在XAML檔案中定義的Image控制項,由於屬於靜態資源。

  所以你不可能在後台CS代碼中對它們進行image.source = null 操作。

  除非你把Image控制項的定義放在CS代碼中,

  這樣你執行image.source = null 操作或者

  將Image控制項從LayoutRoot中卸掉:LayoutRoot.Children.Remove(Image),那麼這個image就會被垃圾收集。

  因此,對於在XAML檔案中定義的影像控制來說,要想釋放這些映像所佔用的記憶體,唯一時刻只能是離開這個Page的時刻。

  所以,一條重要原則:盡量不要將一個包含大量影像控制的page作為你的MainPage,因為這個Page會等到整個程式結束(exit)的時候才會被釋放。

  所以建議就是:

  1.如果程式有主介面的話,盡量不要在主介面上放太多影像控制。

  或者說不要將一個擁有大量映像的page作為main page。

  2.儘可能將需要播放動畫並包含大量映像的page單獨做成一個page,播放完畢或者用完就離開這個page。

  3.Panorama 的background 如果設定成映像image的話,會消耗大量記憶體。一般24M左右,而且跟是否是jpg或png, 跟映像大小和複雜度也沒關係。

  唯一能降低記憶體消耗的方法是講panorama的高度(height)減小,比如減小一半,那麼記憶體消耗也會減小一般,因為它只繪製了一半在介面上。

  你可能會想到將panorama的背景設定成漸層,我試過,這樣也會消耗17M記憶體。

  如果設定成單色(solid color brush),大約消耗2-3M左右。

  唯一不會消耗記憶體的就是:no background。因此,請在選用Panorama之前,好好檢查一下你的程式當前已經消耗了多少記憶體。

  餘下的記憶體還夠不夠你load 一個panorama大胃王。

  4.聽說Pivot也是個讓人又愛又恨的東西,在你加了很多tab到一個pivot中,而且映像又太多時,它也可能掛。

  另外,附送一段代碼,讓你知道在WP7中,如何讓你知道每個Page何時被釋放?

#if(DEBUG)

/// <summary>

/// Add a finalizer to check for memory leaks

/// </summary>

~YourPage()

{

System.Diagnostics.Debug.WriteLine("Finalizing " + this.GetType().FullName);

}

#endif

  你可以將這段代碼添加到你的每一個page中,記得修改這個解構函式的名稱哦。

  那麼當這個page被析構的時候,就會在output控制台裡看到。

  本文來自sphinx007的部落格,原文地址:http://www.cnblogs.com/SphinX/archive/2012/03/12/2391331.html

Windows Phone 7 90M記憶體限制問題及設計原則

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.