每一個程序都很大的內存可使用,在使用前,你要明白你真的須要這麼多的內存嗎?在3.0之後程序就有largeHeap選項,若是爲true,程序可使用256M(個人設備),能夠經過ActivityManager.getMemoryClass(()獲取,爲false 程序可以使用內存爲64(個人設備),能夠經過getMemeryClass()獲取,在網上找了些資料:工具
–G1: 16MB測試
–Droid: 24MB spa
– Nexus One: 32MB圖片
– Xoom: 48MB內存
個人的設備是:tab 2,獲取的是64M,但在使用時遇到下面錯誤:get
也就是說只有30M可使用。具體是什麼緣由我沒有再研究。it
內存分配原則:剛開始系統會給你程序分配上限是已經使用的內存的一倍左右,當不夠用時慢慢調整上限,當超過必定的使用量時,會大幅度調整上限,我在測試時,在64如下調整很小,當使用量超過64M時,系統把內存上限調直接整到了100M以上。前提是在設置 Honeycomb adds 「largeHeap」 選項後map
3.0之前GC操做須要很長時間,以常大於100ms,在執行GC時,程序就會出現卡的現象,3.0之後GC執行的時間一般在5ms之內,在以3.0之前的版本中,加載圖片時,系統把bitmaps加載到Native中,並不受GCt管理,須要手機釋放,否則會遇到莫名奇妙的內存問題。3.0之後Bitmaps直接放到內存中在執行GC時,會及時清理無用的Bitmaps所佔的內存,在初始化圖片時把圖片放到內存中,當加載完後,系統會把圖片從內存轉移到顯存中,當你用內存測試工具時,會發現,在加載圖片時,內存佔用率很高,當加載完成後,內存使用量忽然下來,當加載大量圖片時會發現這種狀況程序