As características de uso da memória de um app são um aspecto fundamental do desempenho dele. Você pode usar o System Profiler para analisar essas características observando as informações do contador de GPU disponíveis.
Dispositivos Adreno
Em dispositivos Adreno, comece destacando um período consistente com um único frame da GPU, conforme descrito em Estimar os tempos de processamento de frames da CPU e da GPU. Use a técnica descrita nesta página que envolve o uso da utilização de % de GPU ou de uma faixa de contagem semelhante para os limites de tempo para a renderização do frame, já que todos os rastreamentos de contador usam a mesma técnica de tempo e permite estimativas mais precisas da utilização da memória (em comparação ao uso dos limites de tempo para a renderização de frames derivados das frações de GPU em que os dados são coletados de forma independente dos dados de rastreamento de contador).
![Rastreamento de utilização alinhado com os contadores relevantes abaixo dele](https://developer.android.com/static/images/agi/memory_efficiency-images/image1.png?authuser=19&hl=pt)
Totais de leitura/gravação
Depois de destacar um único frame no criador de perfil, comece analisando os contadores Read Total (Bytes/sec) e Write Total (Bytes/sec). Esses contadores fornecem uma boa visão geral da quantidade de dados que cruza o barramento de memória ao longo de um único frame. Faça o possível para minimizar a quantidade de dados enviados pelo barramento, já que a largura de banda da memória é uma grande fonte de consumo de bateria em dispositivos móveis.
![Total de contadores de leitura + gravação](https://developer.android.com/static/images/agi/memory_efficiency-images/image2.png?authuser=19&hl=pt)
Também é possível examinar os contadores de Leitura de memória Vertex (bytes/segundo) e Leitura de memória da textura (bytes/segundo) para determinar a parte da largura de banda usada para dados de vértice e textura.
![Contadores de leitura de memória Vertex + Texture](https://developer.android.com/static/images/agi/memory_efficiency-images/image3.png?authuser=19&hl=pt)
O que você considera "bom" para esses valores depende do tipo de cargas de trabalho visadas no seu app. Por exemplo, os aplicativos 2D podem ter quantidades relativamente grandes (aproximadamente 2+ GB/s) de largura de banda de leitura da memória de textura sendo usadas, mas a largura de banda da memória do vértice pode ser muito mínima (aproximadamente 50 MB/s). Para mais detalhes, consulte a documentação sobre Analisar a largura de banda da memória do vértice e Analisar o uso da largura de banda da memória de textura.
Barracas de busca
Confira os contadores % de parada de Vertex Vertex, % de parada de busca de textura e % de parada na memória do sistema. Eles oferecem algumas dicas para o desempenho geral da memória do nosso aplicativo. Se os valores forem mais altos que aproximadamente 5%, isso sugere que o app não está colocando dados na memória de maneira eficiente ou acessa os dados de maneira eficiente para aproveitar o cache. Consulte Analisar a largura de banda de memória do vértice e Analisar o uso da largura de banda da memória de textura para ver detalhes sobre como melhorar o uso de memória para esses tipos de recurso.
![Contadores de armazenamento em memória](https://developer.android.com/static/images/agi/memory_efficiency-images/image4.png?authuser=19&hl=pt)
Dispositivos Mali
Em dispositivos Mali, comece destacando um período consistente com um único frame da GPU, conforme descrito em Estimar tempos de processamento de frames da CPU e da GPU. Use a técnica descrita nesta página que envolve o uso da utilização de % de GPU ou de uma faixa de contagem semelhante para os limites de tempo para a renderização do frame, já que todos os rastreamentos de contador usam a mesma técnica de tempo e permite estimativas mais precisas da utilização da memória (em comparação ao uso dos limites de tempo para a renderização de frames derivados das frações de GPU em que os dados são coletados de forma independente dos dados de rastreamento de contador).
![Trilha de utilização alinhada com os contadores do seu interesse abaixo dela](https://developer.android.com/static/images/agi/memory_efficiency-images/image5.png?authuser=19&hl=pt)
Totais externos de saída
Depois de destacar um único frame no System Profiler, comece analisando os contadores de Output External Read bytes Output External Write bytes. Esses contadores fornecem uma boa visão geral da quantidade de dados que atravessa o barramento de memória ao longo de um único frame. Faça o possível para minimizar a quantidade de dados enviados pelo barramento, já que a largura de banda da memória é uma grande fonte de consumo de bateria em dispositivos móveis.
![Faixas de contador externo de saída](https://developer.android.com/static/images/agi/memory_efficiency-images/image6.png?authuser=19&hl=pt)
Inserir totais internos
Há também contadores que fornecem informações sobre os próprios caches. Os contadores do seu interesse são "Ciclos de inatividade internos de [leitura|gravação] de entrada". Valores mais altos para eles significam que o cache está sendo acessado, mas há muitas solicitações de leitura sendo feitas e, como resultado, o código do sombreador está esperando para ter acesso à memória.
![Inserir faixas de contagem interna](https://developer.android.com/static/images/agi/memory_efficiency-images/image7.png?authuser=19&hl=pt)
Barracas de busca
O próximo conjunto de contadores que você pode analisar são os ciclos de parada do pré-busca do Vertex e os contadores de parada de busca de textura, que oferecem algumas dicas para o desempenho geral da memória do aplicativo. Valores superiores a 5% significam que você não está inserindo nossos dados na memória de forma eficiente ou acessando nossos dados de uma maneira eficiente para aproveitar o cache. Confira os artigos sobre análise da largura de banda de memória [Vertex|Texture] para saber como melhorar o uso da memória nesses tipos de recursos.
![Buscar faixas do contador de lojas](https://developer.android.com/static/images/agi/memory_efficiency-images/image8.png?authuser=19&hl=pt)