APK xətaları

OutOfMemoryError çökməsi

Xəta mətni

java.lang.OutOfMemoryError: Failed to allocate a 33177612 byte allocation with 25165824 free bytes and 24MB until OOM

Səbəb

Tətbiq cihazın verdiyi yaddaş həddini aşır. Ən çox böyük şəkillər, sızan obyektlər və ya böyük siyahılar günahkardır.

Addım-addım həll

  1. dumpsys meminfo ilə yaddaş istifadəsini izlə.
  2. Şəkilləri tam ölçüdə yox, ekran ölçüsündə yüklə (Glide, Coil və ya inSampleSize).
  3. Activity-yə statik istinad və dinləyicilərin silinməməsi kimi sızıntıları axtar (LeakCanary).
  4. Böyük siyahılarda RecyclerView və səhifələmə istifadə et.
  5. largeHeap yalnız müvəqqəti çarədir, əsl səbəbi düzəlt.

Nümunə əmrlər

adb shell dumpsys meminfo com.example.app
adb shell am dumpheap com.example.app /data/local/tmp/h.hprof
# manifest
<application android:largeHeap="true" ...>

Təkrarlanmasın deyə

Debug-da LeakCanary işlət, yaddaş profilini hər böyük funksiyadan sonra yoxla.

Müəllif və lisenziya: Nibras Code