از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
اشکال زدایی استفاده از حافظه بومی
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
آدرس ضد عفونی کننده: HWASan/ASan
توسعه دهندگان پلتفرم اندروید از HWAddressSanitizer (HWASan) برای یافتن اشکالات حافظه در C/C++ استفاده می کنند.
میتوانید تصاویر HWASan از پیش ساخته شده را از ci.android.com ( دستورالعملهای دقیق راهاندازی ) روی دستگاههای پیکسل پشتیبانیشده فلاش کنید.
از اندروید 8.0 (اوریو) نیز میتوان از ASan برای اشکالزدایی برنامهها در دستگاههای تولیدی روت نشده استفاده کرد. می توانید دستورالعمل ها را در
ویکی ASan بیابید.
هیپروفد
Android 10 از heapprofd پشتیبانی میکند، یک نمایهگر هیپ نمونهبرداری کم سربار. heapprofd به شما امکان می دهد استفاده از حافظه بومی را به callstacks در برنامه خود نسبت دهید. برای اطلاعات بیشتر به heapprofd - Android Heap Profiler در سایت اسناد Perfetto مراجعه کنید.
اشکال زدایی Malloc
برای توضیح کامل گزینه های اشکال زدایی موجود برای مشکلات حافظه بومی، به Malloc Debug و Native Memory Tracking با استفاده از libc Callbacks مراجعه کنید.
libmemun قابل دسترسی
libmemunreachable اندروید یک آشکارساز نشت حافظه بومی با سربار صفر است. از یک گذر جمعآوری زباله علامتگذاری و جارو کردن نادقیق روی تمام حافظه اصلی استفاده میکند و هر بلوک غیرقابل دسترس را به عنوان نشت گزارش میدهد. برای دستورالعملهای استفاده به مستندات قابل دسترس libmemun مراجعه کنید.
قلاب مالوک
اگر میخواهید ابزارهای خود را بسازید، libc اندروید از رهگیری همه تماسهای تخصیص/رایگانی که در طول اجرای برنامه اتفاق میافتد نیز پشتیبانی میکند. برای دستورالعمل های استفاده به مستندات malloc_hooks مراجعه کنید.
آمار Malloc
Android از پسوندهای mallinfo(3)
و malloc_info(3)
برای <malloc.h>
پشتیبانی میکند. تابع malloc_info
در اندروید 6.0 (مارشملو) و بالاتر موجود است و طرح XML آن در <malloc.h>
Bionic مستند شده است.
سرور مانیتور اشکال زدایی Dalvik
شما همچنین می توانید از سرور Dalvik Debug Monitor (DDMS) برای به دست آوردن یک نمای گرافیکی از خروجی Malloc Debug استفاده کنید.
برای استفاده از DDMS، ابتدا رابط کاربری حافظه اصلی آن را روشن کنید:
-
~/.android/ddms.cfg
باز کنید - خط را اضافه کنید:
native=true
پس از راهاندازی مجدد DDMS و انتخاب فرآیند، میتوانید به برگه تخصیص بومی جدید بروید و آن را با فهرستی از تخصیصها پر کنید. این به ویژه برای رفع اشکال نشت حافظه مفید است.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","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-29 بهوقت ساعت هماهنگ جهانی."],[],[],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."]]