![](/img/trans.png)
[英]Android Grow heap (frag case) to 7.827MB for 1228816-byte allocation
[英]Android - Grow Heap (Frag Case) - Byte Allocation.. Not Loading any bitmaps
當應用程序從Splash屏幕加載到Main頁面時會發生這種情況。 它只發生在不在模擬器上的設備上:
05-17 08:10:16.627: I/dalvikvm-heap(14021): Grow heap (frag case) to 20.580MB for 2424256-byte allocation
05-17 08:10:16.666: D/dalvikvm(14021): GC_FOR_ALLOC freed 1K, 3% free 21000K/21511K, paused 21ms
05-17 08:10:16.697: D/dalvikvm(14021): GC_CONCURRENT freed 116K, 3% free 20885K/21511K, paused 2ms+2ms
05-17 08:10:16.720: D/dalvikvm(14021): GC_FOR_ALLOC freed 44K, 4% free 20841K/21511K, paused 10ms
05-17 08:10:16.728: I/dalvikvm-heap(14021): Grow heap (frag case) to 24.533MB for 4310896-byte allocation
我使用了Ecplise MAT - 解析了字節分配--Android.Graphics.Bitmap $ preloaded images ...
我使用的設備是Google Nexus Prime,Android 4.0
有沒有遇到過同樣的人? 有人會拋出一些專業知識......
我遇到了同樣的問題並找到了解決方案。
你是從資源加載你的位圖嗎? 如果是這樣,請嘗試將它們放在相應的可繪制文件夾中,而不是將它們保存在“drawable”或“drawable-mdpi”中。
當您將圖像資源放在普通的可繪制文件夾中時,對系統來說它意味着drawable-mdpi。 因此,具有高或超高dpi的設備(我相信Galaxy Nexus是超高)將擴展該資源以匹配設備的dpi。
如果您的資源只有1個大小,請將它們放在drawable-nodpi中,它將按原樣使用。 但是你的一些布局可能會受此影響,因此我將某些圖像保存在可繪制文件夾中(如按鈕圖像等),並將背景和其他更大的資源移動到drawable-nodpi中。
希望這可以幫助 ;)
您可能正在嘗試解碼一個非常大的Bitmap
,從而導致OutOfMemory
異常。 這意味着您嘗試實現的操作超出了設備上每個應用程序所允許的VM預算,就堆內存消耗而言(在您的設備上似乎是24 MB,在您的模擬器上可能更多,這就是為什么它沒有不會發生在那里!)。
嘗試以兩倍的方式對Bitmap
進行采樣:
BitmapFactory.Options o = new BitmapFactory.Options();
o.inSampleSize = 2;
Bitmap b = BitmapFactory.decodeFile(pathToBitmap, o);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.