80 lines
2.0 KiB
Markdown
80 lines
2.0 KiB
Markdown
# 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)
|