O Google está comprometido em promover a equidade racial para as comunidades negras. Veja como.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

Tempo de execução do Android (ART) e Dalvik

O tempo de execução do Android (ART) é o tempo de execução gerenciado usado pelos aplicativos e alguns serviços do sistema no Android. A ART e seu antecessor Dalvik foram originalmente criados especificamente para o projeto Android. ART como o tempo de execução executa o formato Executável Dalvik e a especificação de bytecode Dex.

O ART e o Dalvik são tempos de execução compatíveis com o bytecode Dex, portanto, os aplicativos desenvolvidos para o Dalvik devem funcionar ao executar com o ART. No entanto, algumas técnicas que funcionam no Dalvik não funcionam no ART. Para obter informações sobre os problemas mais importantes, consulte Verificando o comportamento do aplicativo no Android runtime (ART) .

Recursos ART

Aqui estão alguns dos principais recursos implementados pelo ART.

Compilação antecipada (AOT)

O ART apresenta a compilação antecipada (AOT), que pode melhorar o desempenho do aplicativo. O ART também possui uma verificação mais rigorosa do tempo de instalação que a Dalvik.

No momento da instalação, o ART compila aplicativos usando a ferramenta dex2oat no dispositivo. Este utilitário aceita arquivos DEX como entrada e gera um aplicativo compilado executável para o dispositivo de destino. O utilitário deve poder compilar todos os arquivos DEX válidos sem dificuldade. No entanto, algumas ferramentas de pós-processamento produzem arquivos inválidos que podem ser tolerados pelo Dalvik, mas não podem ser compilados pelo ART. Para obter mais informações, consulte Abordando problemas de coleta de lixo .

Coleta de lixo aprimorada

A coleta de lixo (GC) pode prejudicar o desempenho de um aplicativo, resultando em exibição instável, baixa capacidade de resposta da interface do usuário e outros problemas. O ART melhora a coleta de lixo de várias maneiras:

  • Uma pausa no GC em vez de duas
  • Processamento paralelo durante a pausa restante do GC
  • Coletor com menor tempo total de GC para o caso especial de limpeza de objetos de vida curta alocados recentemente
  • Ergonomia aprimorada da coleta de lixo, tornando mais oportuna a coleta simultânea de lixo, o que torna os eventos GC_FOR_ALLOC extremamente raros em casos de uso típicos
  • Compactação do GC para reduzir o uso e a fragmentação da memória em segundo plano

Melhorias no desenvolvimento e depuração

O ART oferece vários recursos para melhorar o desenvolvimento e a depuração de aplicativos.

Suporte para o perfilador de amostragem

Historicamente, os desenvolvedores usam a ferramenta Traceview (projetada para rastrear a execução de aplicativos) como um criador de perfil. Embora o Traceview forneça informações úteis, seus resultados no Dalvik foram distorcidos pela sobrecarga por chamada de método, e o uso da ferramenta afeta visivelmente o desempenho do tempo de execução.

O ART adiciona suporte para um criador de perfil de amostragem dedicado que não possui essas limitações. Isso fornece uma visão mais precisa da execução do aplicativo sem desaceleração significativa. O suporte de amostragem foi adicionado ao Traceview for Dalvik na versão KitKat.

Suporte para mais recursos de depuração

O ART suporta várias novas opções de depuração, particularmente na funcionalidade relacionada ao monitor e à coleta de lixo. Por exemplo, você pode:

  • Veja quais bloqueios são mantidos nos rastreamentos de pilha e pule para o encadeamento que contém um bloqueio.
  • Pergunte quantas instâncias ao vivo existem de uma determinada classe, peça para ver as instâncias e veja quais referências estão mantendo um objeto ativo.
  • Filtre eventos (como ponto de interrupção) para uma instância específica.
  • Veja o valor retornado por um método quando ele sai (usando eventos "method-exit").
  • Defina o watchpoint do campo para suspender a execução de um programa quando um campo específico for acessado e / ou modificado.

Detalhes de diagnóstico aprimorados em exceções e relatórios de falhas

O ART fornece o máximo de contexto e detalhes possível quando ocorrem exceções de tempo de execução. O ART fornece detalhes de exceção expandidos para java.lang.ClassCastException , java.lang.ClassNotFoundException e java.lang.NullPointerException . (Versões posteriores do Dalvik fornecida expandido detalhe excepção para java.lang.ArrayIndexOutOfBoundsException e java.lang.ArrayStoreException , que agora inclui o tamanho da matriz e a fora dos limites offset, e ART faz isso também.)

Por exemplo, java.lang.NullPointerException agora mostra informações sobre o que o aplicativo estava tentando fazer com o ponteiro nulo, como o campo em que o aplicativo estava tentando gravar ou o método que estava tentando chamar. Aqui estão alguns exemplos típicos:

java.lang.NullPointerException: Attempt to write to field 'int
android.accessibilityservice.AccessibilityServiceInfo.flags' on a null object
reference
java.lang.NullPointerException: Attempt to invoke virtual method
'java.lang.String java.lang.Object.toString()' on a null object reference

O ART também fornece informações de contexto aprimoradas nos relatórios de falha nativos do aplicativo, incluindo informações sobre Java e pilha nativa.

Relatando Problemas

Se você se deparar com problemas que não são devidos a problemas de JNI de aplicativos, relate-os por meio do Rastreador de problemas de projetos de código aberto do Android . Inclua um adb bugreport e um link para o aplicativo na loja Google Play, se disponível. Caso contrário, se possível, anexe um APK que reproduza o problema.