تخصیص های بومی را ثبت کنید
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
اگر در حال نوشتن کد بومی هستید و نگران استفاده از حافظه آن هستید، مفید است که تخصیص بومی برنامه خود را نمایه کنید تا بفهمید آیا فرصتی برای بهینه سازی وجود دارد یا خیر.
چرا باید حافظه برنامه خود را نمایه کنید
Android یک محیط حافظه مدیریت شده را فراهم می کند — وقتی Android تشخیص می دهد که برنامه شما دیگر از برخی اشیاء استفاده نمی کند، زباله جمع کننده حافظه استفاده نشده را به پشته باز می کند. نحوه یافتن حافظه استفاده نشده اندروید به طور مداوم در حال بهبود است، اما در برخی از نسخههای اندروید، سیستم باید برای مدت کوتاهی کد شما را متوقف کند. بیشتر اوقات، مکث ها غیرقابل درک است. با این حال، اگر برنامه شما سریعتر از آنچه سیستم میتواند آن را جمعآوری کند، حافظه را تخصیص میدهد، ممکن است برنامه شما به تأخیر بیفتد در حالی که جمعآورنده حافظه کافی برای برآورده کردن تخصیصهای شما آزاد میکند. تأخیر ممکن است باعث شود برنامه شما فریم ها را رد کند و باعث کندی قابل مشاهده شود.
برای کسب اطلاعات در مورد شیوههای برنامهنویسی که میتوانند استفاده از حافظه برنامه شما را کاهش دهند، مدیریت حافظه برنامه خود را بخوانید.
نمای کلی تخصیص های بومی
هنگامی که وظیفه Track Memory Consumption (تخصیصهای بومی) را اجرا میکنید، Android Studio Profiler تخصیصها و تخصیصهای اشیاء را در کد بومی برای دوره زمانی که شما مشخص میکنید ردیابی میکند و اطلاعات زیر را ارائه میکند:
- تخصیص : تعداد اشیایی که با استفاده از
malloc()
یا عملگر new
در طول دوره زمانی انتخاب شده تخصیص داده شده است. - Deallocations : تعداد اشیایی که با استفاده از
free()
یا عملگر delete
در طول دوره زمانی انتخاب شده توزیع شده اند. - اندازه تخصیص ها : اندازه جمع آوری شده در بایت همه تخصیص ها در طول دوره زمانی انتخاب شده.
- Dealocations Size : اندازه جمع آوری شده در بایت از تمام حافظه آزاد شده در طول دوره زمانی انتخاب شده.
- تعداد کل : مقدار در ستون تخصیص منهای مقدار در ستون Deallocations .
- Remaining Size : مقدار موجود در ستون اندازه تخصیص منهای مقدار ستون Deallocations Size .

تب Visualization یک نمای تجمیع شده از تمام اشیاء مربوط به کد بومی در پشته تماس را در بازه زمانی انتخاب شده نشان می دهد. اساساً به شما نشان میدهد که پشته تماس با نمونههای نشاندادهشده چه مقدار از حافظه را اشغال میکند. ردیف اول نام موضوع را نشان می دهد. به طور پیش فرض، اشیاء بر اساس اندازه تخصیص از چپ به راست انباشته می شوند. از منوی کشویی برای تغییر ترتیب استفاده کنید.

به طور پیش فرض، نمایه ساز از اندازه نمونه 2048 بایت استفاده می کند: هر بار که 2048 بایت حافظه تخصیص داده می شود، یک عکس فوری از حافظه گرفته می شود. اندازه نمونه کوچکتر منجر به عکس های فوری بیشتر می شود و داده های دقیق تری در مورد استفاده از حافظه به دست می دهد. اندازه نمونه بزرگتر داده های دقیق کمتری به دست می دهد، اما منابع سیستم کمتری مصرف می کند و عملکرد را در حین ضبط بهبود می بخشد. برای تغییر اندازه نمونه، به ویرایش پیکربندی ضبط مراجعه کنید.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و 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,["# Record native allocations\n\nIf you're writing native code and concerned about its memory usage, it's helpful\nto profile your app's native allocations to discover if there's opportunity to\noptimize.\n\nWhy you should profile your app memory\n--------------------------------------\n\nAndroid provides a [managed memory\nenvironment](/topic/performance/memory-overview)---when Android determines that\nyour app is no longer using some objects, the garbage collector releases the\nunused memory back to the heap. How Android goes about finding unused memory is\nconstantly being improved, but at some point on all Android versions, the system\nmust briefly pause your code. Most of the time, the pauses are imperceivable.\nHowever, if your app allocates memory faster than the system can collect it,\nyour app might be delayed while the collector frees enough memory to satisfy\nyour allocations. The delay could cause your app to skip frames and cause\nvisible slowness.\n\nFor information about programming practices that can reduce your app's memory\nuse, read [Manage your app's memory](/topic/performance/memory).\n\nNative allocations overview\n---------------------------\n\nWhen you run the [**Track Memory Consumption (Native Allocations)**](/studio/profile#start-profiling) task,\nthe Android Studio Profiler tracks allocations and deallocations of objects in\nnative code for the time period that you specify and provides the following\ninformation:\n\n- **Allocations** : A count of objects allocated using `malloc()` or the `new` operator during the selected time period.\n- **Deallocations** : A count of objects deallocated using `free()` or the `delete` operator during the selected time period.\n- **Allocations Size**: The aggregated size in bytes of all allocations during the selected time period.\n- **Deallocations Size**: The aggregated size in bytes of all freed memory during the selected time period.\n- **Total Count** : The value in the **Allocations** column minus the value in the **Deallocations** column.\n- **Remaining Size** : The value in the **Allocations Size** column minus the value in the **Deallocations Size** column.\n\nThe **Visualization** tab shows an aggregated view of all the objects related to\nnative code in the call stack during the time range selected. It essentially\nshows you how much total memory the callstack with the instances shown takes.\nThe first row shows the thread name. By default, the objects are stacked left to\nright based on allocation size; use the drop-down to change the ordering.\n\nBy default, the profiler uses a sample size of 2048 bytes: Every time 2048 bytes\nof memory are allocated, a snapshot of memory is taken. A smaller sample size\nresults in more frequent snapshots, yielding more accurate data about memory\nusage. A larger sample size yields less accurate data, but it consumes fewer\nsystem resources and improves performance while recording. To change the sample\nsize, see [Edit the recording configuration](/studio/profile#edit-recording)."]]