تحسين ذاكرة التطبيق
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
تعد الذاكرة موردًا قيّمًا في أي بيئة تطوير برامج، ولكنها أكثر قيمة في نظام تشغيل الأجهزة الجوّالة حيث تكون الذاكرة الفعلية مقيَّدة في كثير من الأحيان. وينطبق ذلك بشكل خاص على الأجهزة ذات الذاكرة المنخفضة الذاكرة التي يشيع استخدامها مع نظام التشغيل Android (إصدار Go). هناك عدة طرق للمساعدة في تحسين الذاكرة
في تطبيقك للمساعدة في العمل بسلاسة في هذه البيئات.
أفضل الممارسات
إصدار ذاكرة التخزين المؤقت
قد لا تكون هناك ذاكرة كافية لاستمرار العمليات في الخلفية كما تفعل في البيئة العادية. في هذه الحالة، يمكنك استخدام
onTrimMemory()
لقطع الذاكرة غير الضرورية من عملية تطبيقك. لتحديد مستوى القطع الحالي لتطبيقك بشكل أفضل، استخدِم
ActivityManager.getMyMemoryState(RunningAppProcessInfo)
وحسِّن أي موارد غير ضرورية أو اقتطاعها. على سبيل المثال، يمكنك قطع الاستخدام غير الضروري للذاكرة من التعبيرات أو البحث أو عرض ذاكرة التخزين المؤقت أو الإضافات القابلة للفتح، وذلك لتقليل عدد المرات التي يواجه فيها تطبيقك أعطالاً أو أخطاء ANR بسبب انخفاض الذاكرة.
جدولة المهام
يمكن أن تؤدي الجدولة المتزامنة إلى تنفيذ عمليات متعددة تستهلك قدرًا كبيرًا من الذاكرة في الوقت نفسه، ما يؤدي إلى منافسة على الموارد التي تتجاوز الحد الأقصى لاستخدام الذاكرة الذي تم تطبيقه على أحد التطبيقات. حاوِل تخصيص الموارد بشكلٍ مناسب عن طريق فصل العمليات إلى مهام تستهلك قدرًا كبيرًا من وحدات المعالجة المركزية (CPU) والمهام ذات وقت الاستجابة السريع على مجموعة سلاسل التعليمات المناسبة للتشغيل على الأجهزة التي قد تواجه قيودًا مختلفة في الموارد.
تسرُّب الذاكرة
تتوفّر أدوات مختلفة، مثل
Memory Profiler في Android Studio وPerfetto
على وجه التحديد، للمساعدة في العثور على تسرب الذاكرة داخل التطبيق والحد منه.
ننصحك بشدة باستخدام هذه الأدوات لتحديد المشاكل المحتملة في الذاكرة وإصلاحها
للسماح بتشغيل المكونات الأخرى لتطبيقك بدون
ضغط إضافي على النظام.
نصائح أخرى
- تستهلك الصور الكبيرة أو العناصر القابلة للرسم المزيد من الذاكرة في التطبيقات. يمكنك تحديد وتحسين الصور النقطية
الكبيرة أو ذات الألوان الكاملة لتقليل استخدام الذاكرة.
- جرِّب تحديد خيارات أخرى لملفات GIF في تطبيقك عند إنشاء ملفات لنظام التشغيل Android
(الإصدار Go) لأنّ ملفات GIF تستهلك الكثير من الذاكرة.
- يمكنك تقليل أحجام ملفات PNG بدون فقدان جودة الصور باستخدام أدوات مثل
WebP وpngcrush وpngquant. يمكن لكل هذه الأدوات تقليل حجم ملف PNG
مع الحفاظ على جودة الصورة الإدراكية.
- يمكن لأداة aapt تحسين موارد الصور الموضوعة في
res/drawable/
باستخدام ضغط بدون فقدان البيانات أثناء عملية الإنشاء. على سبيل المثال، يمكن لأداة aapt تحويل ملف PNG
ألوان حقيقي لا يتطلب أكثر من 256 لونًا إلى ملف PNG 8 بت باستخدام لوحة ألوان. ينتج عن ذلك صورة ذات جودة متساوية، ولكن مع صغر في أثر الذاكرة.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Optimize app memory\n\nMemory is a valuable resource in any software development environment, but it's\neven more valuable on a mobile operating system where physical memory is often\nconstrained. This is especially true for natively low-memory devices found\ncommonly with Android (Go edition). There are a few ways to help optimize memory\nin your app to help it run smoothly in these environments.\n\nBest practices\n--------------\n\n### Release cache memory\n\nThere may not be enough memory to keep background processes running as you\nwould in a typical environment. In this case, you can use\n[`onTrimMemory()`](/reference/android/content/ComponentCallbacks2#onTrimMemory(int))\nto trim unneeded memory from your app's process. To best\nidentify the current trim level for your app, use\n[`ActivityManager.getMyMemoryState(RunningAppProcessInfo)`](/reference/android/app/ActivityManager#getMyMemoryState(android.app.ActivityManager.RunningAppProcessInfo))\nand optimize or trim any unnecessary resources. For example, you can trim\nunnecessary memory usage from\nexpressions, search, view cache, or openable extensions to reduce the number of\ntimes your app experiences crashes or ANRs due to low memory.\n\n### Task scheduling\n\nConcurrent scheduling can lead to multiple memory intensive operations to run\nin parallel, leading to competition for resources exceeding the peak memory\nusage of an app. Try to appropriately allocate resources by separating processes\ninto CPU intensive, low latency tasks in the right\n[thread pool](/guide/background/threading) to run on devices that may face\nvarious resource constraints.\n\n### Memory leaks\n\nVarious tools, such as\n[Memory Profiler](/studio/profile/memory-profiler) in Android Studio and\n[Perfetto](https://perfetto.dev/docs/case-studies/memory) are\nspecifically available to help find and reduce memory leaks within your app.\nIt's highly encouraged that you use these tools to identify and fix potential\nmemory issues to allow other components of your app to run without additional\npressure on the system.\n\n### Other tips\n\n- Large images or drawables consume more memory in apps. Identify and optimize large or full-colored bitmaps to reduce memory usage.\n- Try to choose other options for GIFs in your app when building for Android (Go edition) as GIFs consume a lot of memory.\n- You can reduce PNG file sizes without losing image quality using tools like [WebP](/studio/write/convert-webp), pngcrush, and pngquant. All of these tools can reduce PNG file size while preserving the perceptive image quality.\n- The aapt tool can optimize the image resources placed in `res/drawable/` with lossless compression during the build process. For example, the aapt tool can convert a true-color PNG that does not require more than 256 colors to an 8-bit PNG with a color palette. Doing so results in an image of equal quality but a smaller memory footprint."]]