heap_profile - record heap profile on Android device


tools/heap_profile allows to collect native memory profiles on Android. See Recording traces for more details about the data-source.

usage: heap_profile [-h] [-i INTERVAL] [-d DURATION] [--no-start] [-p PIDS] [-n NAMES] [-c CONTINUOUS_DUMP] [--disable-selinux] [--no-versions] [--no-running] [--no-startup] [--shmem-size SHMEM_SIZE] [--block-client] [--block-client-timeout BLOCK_CLIENT_TIMEOUT] [--no-block-client] [--idle-allocations] [--dump-at-max] [--disable-fork-teardown] [--simpleperf] [--traceconv-binary TRACECONV_BINARY] [--print-config] [-o DIRECTORY]


-n, --name NAMES

Comma-separated list of process names to profile.

-p, --pid PIDS

Comma-separated list of PIDs to profile.

-i, --interval

Sampling interval. Default 4096 (4KiB)

-o, --output DIRECTORY

Output directory.


Collect allocations from all heaps registered by target.


When buffer is full, block the client to wait for buffer space. Use with caution as this can significantly slow down the client. This is the default


If --block-client is given, do not block any allocation for longer than this timeout (us).

-c, --continuous-dump

Dump interval in ms. 0 to disable continuous dump.

-d, --duration

Duration of profile (ms). 0 to run until interrupted. Default: until interrupted by user.


Do not tear down client in forks. This can be useful for programs that use vfork. Android 11+ only.


Disable SELinux enforcement for duration of profile.


Dump the maximum memory usage rather than at the time of the dump.

-h, --help

show this help message and exit

--heaps HEAPS

Comma-separated list of heaps to collect, e.g: malloc,art. Requires Android 12.


Keep track of how many bytes were unused since the last dump, per callstack


Do not symbolize using currently lunched target in the Android tree.


When buffer is full, stop the profile early.


Do not target already running processes. Requires Android 11.


Do not start heapprofd.


Do not target processes that start during the profile. Requires Android 11.


Do not get version information about APKs.


Print config instead of running. For debugging.


Size of buffer between client and heapprofd. Default 8MiB. Needs to be a power of two multiple of 4096, at least 8192.


Get simpleperf profile of heapprofd. This is only for heapprofd development.


Path to local trace to text. For debugging.