Android'in API 10'undan önce, gerçek ham verilerin yerel bellekte depolandığından, artık kullanılmayan Bitmap
s için recycle()
numaralı telefonu aramak önemliydi.API 11+ üzerinde bitmap.recycle() işlevi nedir?
Ancak API 11 itibariyle Bitmap
s yığın saklanır, böylece sorum şu:
hala API yeterince büyükse Bitmap
s tarihinde recycle()
çağırmak için gerekli mi (en az 11)? Bu API’da ararsam ne yapar?
"10'dan önce geri dönüşüm() 'i çağırmak önemliydi" dediğinizde bu, eğer hafıza olmazsa, asla boş bırakılmayacaksınız demektir? Resmi dokümanlar, "önerilen" olduğunu söylüyor, ancak bitmapi yerel bellekte ayırırsa, geri dönüşüm() için bir çağrı olmadan nasıl serbest bırakılacağını anlamıyorum. – Tiago
@Tiago Bu dersi izleyebilirsiniz: https://www.youtube.com/watch?v=_CruQY55HOk#t=656. Bitmap'ler yığın içinde çok küçük bir yer kapladı, ancak piksel verileri (yığının OOM mekanizmasının bir parçasıydı) olmadı, bu yüzden GC, durumun ne kadar iyi/kötü olduğunu bilmiyordu ve eğer değilse Birden çok bitmap oluştururken tetiklenir, kolayca OOM alabilirsiniz. Bu yüzden "geri dönüşüm" olarak adlandırmak önemlidir, böylece en kısa sürede bitmapleri temizler (çünkü GC işi iyi yapmadı). –
Ah, anlıyorum. Bu birçok şeyi açıklıyor. OutOfMemory istisnasının hem yığın hem de yerel bellek için sayılacağı ve GC'nin yalnızca yığına bakacağı oldukça garip. Honeycomb + 'dan sonra, bitmaplerin piksel verileri de yığın halinde, sonra GC işini doğru yapabilir. Ne dağınık, hehe! Netleştirdiğiniz için teşekkürler! – Tiago