اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release
بدلاً من aosp-main
لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
تصحيح أخطاء استخدام الذاكرة المضمّنة
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
أداة تنظيف العناوين: HWASan/ASan
يستخدم مطوّرو منصة Android أداة HWAddressSanitizer
(HWASan) للعثور على أخطاء الذاكرة في C/C++.
يمكنك فلاش صور HWASan المُعدّة مسبقًا على أجهزة Pixel المتوافقة من
ci.android.com (تعليمات الإعداد التفصيلية).
منذ الإصدار Android 8.0 (Oreo)، أصبح من الممكن أيضًا استخدام ASan لتصحيح أخطاء التطبيقات على الأجهزة المخصّصة للإصدارات العلنية والتي لم يتم تعريضها للاختراق. يمكنك العثور على التعليمات في
ASan wiki.
Heapprofd
يتيح لك نظام التشغيل Android 10 استخدام أداة heapprofd، وهي أداة تحليل ذاكرة التخزين المؤقت ذات التكلفة المنخفضة.
تتيح لك أداة heapprofd تحديد استخدام الذاكرة الأصلية في تسلسلات استدعاء الدوال البرمجية في برنامجك.
اطّلِع على
heapprofd - أداة تحليل الذاكرة في Android على
موقع مستندات Perfetto الإلكتروني
لمزيد من المعلومات.
تصحيح أخطاء تخصيص وتسرّب الذاكرة
اطّلِع على تصحيح أخطاء Malloc وتتبُّع ملف برمجي
للذاكرة الأصلية باستخدام وظائف الاستدعاء libc للحصول على وصف شامل ل options
لتصحيح الأخطاء المتاحة لمشاكل الذاكرة الأصلية.
libmemunreachable
libmemunreachable في Android هي أداة رصد تسرُّب الذاكرة الأصلية بدون أي تكلفة إضافية.
ويستخدم هذا الإجراء طريقة غير دقيقة لجمع المهملات من خلال وضع علامة عليها وتنظيفها في جميع ذاكرة التطبيقات الأصلية، ويُبلغ عن أي وحدات لا يمكن الوصول إليها على أنّها تسرب للذاكرة. اطّلِع على مستندات libmemunreachable للحصول على تعليمات الاستخدام.
وظائف malloc
إذا كنت تريد إنشاء أدواتك الخاصة، تتيح مكتبة libc في Android أيضًا اعتراض جميع
طلبات تخصيص الذاكرة أو تحريرها التي تحدث أثناء تنفيذ البرنامج. اطّلِع على مستنداتmalloc_hooks للحصول على تعليمات الاستخدام.
إحصاءات Malloc
يتيح Android استخدام علامتَي التبويب mallinfo(3)
وmalloc_info(3)
مع <malloc.h>
.
تتوفّر الدالة malloc_info
في الإصدار 6.0 من نظام التشغيل Android (Marshmallow) والإصدارات الأحدث،
وتم توثيق مخطّط XML الخاص بها في <malloc.h>
في Bionic.
خادم Dalvik Debug Monitor
يمكنك أيضًا استخدام Dalvik Debug
Monitor Server (DDMS) للحصول على عرض بياني لمخرجات Malloc Debug.
لاستخدام DDMS، عليك أولاً تفعيل واجهة مستخدم الذاكرة الأصلية:
- فتح "
~/.android/ddms.cfg
"
- أضِف السطر:
native=true
عند إعادة تشغيل DDMS واختيار عملية، يمكنك التبديل إلى علامة التبويب الجديدة
التخصيص التلقائي وملؤها بقائمة عمليات التخصيص. ويُعدّ ذلك مفيداً
بشكل خاص لتصحيح أخطاء تسرّب الذاكرة.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ 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,["# Debug native memory use\n\nAddress Sanitizer: HWASan/ASan\n------------------------------\n\nAndroid platform developers use [HWAddressSanitizer](/docs/security/test/hwasan)\n(HWASan) to find memory bugs in C/C++.\n\nYou can flash prebuilt HWASan images to supported Pixel devices from\n[ci.android.com](https://ci.android.com/builds/branches/aosp-master-with-phones-throttled/grid?) ([detailed setup instructions](https://developer.android.com/ndk/guides/hwasan)).\n\nSince Android 8.0 (Oreo) it's also possible to use ASan to debug apps on non-rooted production devices. You can find instructions on the [ASan wiki](https://github.com/google/sanitizers/wiki/AddressSanitizerOnAndroidO).\n\n\u003cbr /\u003e\n\nHeapprofd\n---------\n\nAndroid 10 supports heapprofd, a low-overhead, sampling heap profiler.\nheapprofd lets you attribute native memory usage to callstacks in your program.\nSee [heapprofd - Android Heap Profiler](https://docs.perfetto.dev/#/heapprofd) on the\n[Perfetto documentation site](https://docs.perfetto.dev/#/)\nfor more information.\n\nMalloc debug\n------------\n\nSee [Malloc\nDebug](https://android.googlesource.com/platform/bionic/+/android16-release/libc/malloc_debug/README.md) and [Native\nMemory Tracking using libc Callbacks](https://android.googlesource.com/platform/bionic/+/android16-release/libc/malloc_debug/README_api.md) for a thorough description of the\ndebugging options available for native memory issues.\n\nlibmemunreachable\n-----------------\n\nAndroid's libmemunreachable is a zero-overhead native memory leak detector.\nIt uses an imprecise mark-and-sweep garbage collector pass over all native memory,\nreporting any unreachable blocks as leaks. See the\n[libmemunreachable\ndocumentation](https://android.googlesource.com/platform/system/memory/libmemunreachable/+/android16-release/README.md) for usage instructions.\n\nMalloc hooks\n------------\n\nIf you want to build your own tools, Android's libc also supports intercepting all\nallocation/free calls that happen during program execution. See the\n[malloc_hooks\ndocumentation](https://android.googlesource.com/platform/bionic/+/android16-release/libc/malloc_hooks/README.md) for usage instructions.\n\nMalloc statistics\n-----------------\n\n\nAndroid supports the [`mallinfo(3)`](http://man7.org/linux/man-pages/man3/mallinfo.3.html)and [`malloc_info(3)`](http://man7.org/linux/man-pages/man3/malloc_info.3.html) extensions to `\u003cmalloc.h\u003e`.\nThe `malloc_info` function is available in Android 6.0 (Marshmallow) and higher and\nits XML schema is documented in Bionic's\n[`\u003cmalloc.h\u003e`](https://android.googlesource.com/platform/bionic/+/android16-release/libc/include/malloc.h).\n\nDalvik Debug Monitor Server\n---------------------------\n\nYou can also use the [Dalvik Debug\nMonitor Server (DDMS)](https://developer.android.com/studio/profile/ddms.html) to obtain a graphical view of Malloc Debug\noutput.\n\nTo use DDMS, first turn on its native memory UI:\n\n1. Open `~/.android/ddms.cfg`\n2. Add the line: `native=true`\n\nUpon relaunching DDMS and selecting a process, you can switch to the new\nnative allocation tab and populate it with a list of allocations. This is\nespecially useful for debugging memory leaks."]]