Uygulamamız çok fazla bitmap kullanıyor. Örneğin G1, XOOM'da çalışıyor. Ancak HTC Desire'da bir OutOfMemory hatası var. Kodda try/catch (OutOfMemoryError e) ve tüm cihazlar (Desire hariç) istisnasını kullanırız, ancak HTC, uygulamayı OOM istisnası olmadan sadece öldürür. Bitmap'lerin belleğini 12 Mb'ye sınırladık ve bu çözümün sorunu çözdüğünü görüyoruz, ancak müşteri hala HTC Desire HD'de sorun yaşıyor. 12 Mb kısıtlamayla bile OOM var. Burada günlükleri:Android için bitmap için ne kadar boş yığın boyutu bulunduğunu nasıl bulabilirim 2. *?
06-07 12:03:43.978 E/dalvikvm-heap(29616):1140128-byte external allocation too large for this process.
06-07 12:03:43.978 E/dalvikvm(29616):Out of memory: Heap Size=12311KB, Allocated=9420KB, Bitmap Size=12139KB, Limit=21884KB
06-07 12:03:43.978 E/dalvikvm(29616):Trim info: Footprint=15751KB, Allowed Footprint=15751KB, Trimmed=3440KB
06-07 12:03:43.978 E/GraphicsJNI(29616):VM won't let us allocate 1140128 bytes
AFAIK cihazlar için farklı yığın boyutu sınırlamalar vardır (G1: 16MB Droid: 24 MB Xoom 48 mb). Benim görüşüme göre sistem en az 16 mb vermeli, ama 12mb ile OOM var. Sorum şu: Android için bitmap için kaç tane bedava yığın boyutu bulunduğunu nasıl öğrenebilirim? *? Ya da lütfen başka yollarla bu tür sorunlardan nasıl korunacağınızı önerin. FYI, özellikle diğer cihazlarda iyi çalışıyorsa daha az bitmap kullanamıyoruz. Herhangi bir yardım için şimdiden teşekkür ederiz!
Sen hangi zaman Aktivite ne olacağını işleyebilir, etkinlik'ınonLowMemory();
yöntemi geçersiz kılabilirsiniz
Runtime.getRuntime().maxMemory();
deneyin ya
getMemoryInfo(ActivityManager.MemoryInfo;
yanında etkinlik'ın yöntem olabilir
AFAIK bitmapler dış yığına ayrılır. Bu yöntemler, bir uygulamanın "normal" ve harici yığın bilgisini verirse, Dunno. Ayrıca bakınız: [bu gönderi] (http://stackoverflow.com/questions/1945142/bitmaps-in-android) – icyerasor
Gerçekten de yerel yığınlar üzerinde tahsis edilmiştir. Ancak en azından Bitmap'in Honeycomb öncesi sürümleri için, yerel bitmap kodu, piksel verilerinin Java kodundan istenmesi durumunda (setPixel, getPixel vb.), Aynı miktarda Java yığınını (bir dizi olarak) ayırmayı garanti eder. Bu durumda JNI yerel piksel verilerini Java alanına kopyalar, bu nedenle mevcut Java yığın alanını da kontrol etmek gerekir. – tiguchi