# Quickstart: Heap profiling ## Prerequisites * [ADB](https://developer.android.com/studio/command-line/adb) installed. * A device running Android 10+. * A _Profileable_ or _Debuggable_ app. If you are running on a _"user"_ build of Android (as opposed to _"userdebug"_ or _"eng"_), your app needs to be marked as profileable or debuggable in its manifest. See the [heapprofd documentation][hdocs] for more details. [hdocs]: /docs/data-sources/native-heap-profiler.md#heapprofd-targets ## Capture a heap profile ### Linux / macOS Make sure adb is installed and in your PATH. ```bash adb devices -l ``` If more than one device or emulator is reported you must select one upfront as follows: ```bash export ANDROID_SERIAL=SER123456 ``` Download the `tools/heap_profile` (if you don't have a perfetto checkout): ```bash curl -LO https://raw.githubusercontent.com/google/perfetto/master/tools/heap_profile chmod +x heap_profile ``` Then start the profile: ```bash ./heap_profile -n system_server ``` ### Windows Make sure that the downloaded adb.exe is in the PATH. ```bash set PATH=%PATH%;%USERPROFILE%\Downloads\platform-tools adb devices -l ``` If more than one device or emulator is reported you must select one upfront as follows: ```bash set ANDROID_SERIAL=SER123456 ``` Download the [heap_profile](https://raw.githubusercontent.com/google/perfetto/master/tools/heap_profile) script. Then start the profile: ```bash python /path/to/heap_profile -n system_server ``` ## View profile Upload the `raw-trace` file from the output directory to the [Perfetto UI]( https://ui.perfetto.dev) and click on diamond marker in the UI track labeled _"Heap profile"_. ![Profile Diamond](/docs/images/profile-diamond.png) ![Native Flamegraph](/docs/images/syssrv-apk-assets-two.png) ## Next steps Learn more about memory debugging in the [Memory Usage on Android Guide]( /docs/case-studies/memory.md) and more about the [heapprofd data-source]( /docs/data-sources/native-heap-profiler.md)