A partir de 27 de março de 2025, recomendamos usar android-latest-release
em vez de aosp-main
para criar e contribuir com o AOSP. Para mais informações, consulte Mudanças no AOSP.
Depurar uso de memória nativa
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Limpador de endereços: HWASan/ASan
Os desenvolvedores da plataforma Android usam o HWAddressSanitizer
(HWASan) para encontrar bugs de memória em C/C++.
É possível atualizar as imagens HWASan pré-criadas para dispositivos Pixel com suporte em
ci.android.com (instruções detalhadas de configuração).
Desde o Android 8.0 (Oreo) também é possível usar o ASan para depurar apps em dispositivos de produção
sem acesso root. Confira instruções na
wiki do ASan.
Heapprofd
O Android 10 oferece suporte ao heapprofd, um criador de perfil de heap de baixa sobrecarga.
O heapprofd permite atribuir o uso de memória nativa às pilhas de chamadas no programa.
Consulte
heapprofd: o Profiler de heap do Android no
site de documentação do Perfetto
para mais informações.
Depuração Malloc
Consulte Depuração
Malloc e Rastreamento de
memória nativa usando callbacks de libc para conferir uma descrição completa das
opções de depuração disponíveis para problemas de memória nativa.
libmemunreachable
O libmemunreachable do Android é um detector de vazamento de memória nativa sem sobrecarga.
Ele usa uma passagem imprecisa de coletor de lixo de marcação e varredura em toda a memória nativa,
informando qualquer bloco inacessível como vazamentos. Consulte a
documentação
libmemunreachable para instruções de uso.
Hooks Malloc
Se você quiser criar as próprias ferramentas, a libc do Android também é compatível com a interceptação
de todas as chamadas de alocação/livres que acontecem durante a execução do programa. Consulte a
documentação do
malloc_hooks (em inglês) para conferir instruções de uso.
Estatísticas Malloc
O Android oferece suporte às extensões mallinfo(3)
e malloc_info(3)
para <malloc.h>
.
A função malloc_info
está disponível no Android 6.0 (Marshmallow) e versões mais recentes.
O esquema XML dela está documentado no
<malloc.h>
da Bionic.
Dalvik Debug Monitor Server
Também é possível usar o Dalvik Debug
Monitor Server (DDMS) para ter uma visualização gráfica da saída de depuração
do Malloc.
Para usar o DDMS, primeiro ative a interface da memória nativa:
- Abrir
~/.android/ddms.cfg
- Adicione a linha:
native=true
Ao reiniciar o DDMS e selecionar um processo, você pode alternar para a nova
guia de alocação nativa e preenchê-la com uma lista de alocações. Isso é
especialmente útil para depurar vazamentos de memória.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-07-27 UTC."],[],[],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."]]