أخطاء APK

انهيار OutOfMemoryError

نص الخطأ

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

السبب

يتجاوز التطبيق حد الذاكرة الذي يمنحه الجهاز. غالبًا السبب صور كبيرة أو كائنات مسرّبة أو قوائم ضخمة.

الحل خطوة بخطوة

  1. راقب استهلاك الذاكرة بـ dumpsys meminfo.
  2. حمّل الصور بحجم الشاشة لا بالحجم الكامل (Glide أو Coil أو inSampleSize).
  3. ابحث عن التسريبات مثل مراجع ثابتة إلى Activity ومستمعين لم يُزالوا (LeakCanary).
  4. استخدم RecyclerView والترقيم في القوائم الطويلة.
  5. largeHeap حل مؤقت فقط؛ عالج السبب الحقيقي.

أوامر للمثال

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

كيف لا يتكرر

شغّل LeakCanary في debug وافحص ملف الذاكرة بعد كل ميزة كبيرة.

المؤلف والترخيص: Nibras Code