Google 致力于为黑人社区推动种族平等。查看具体举措
Esta página foi traduzida pela API Cloud Translation.
Switch to English

Android Runtime (ART) e Dalvik

O Android runtime (ART) é o tempo de execução gerenciado usado por aplicativos e alguns serviços do sistema no Android. ART e seu predecessor Dalvik foram originalmente criados especificamente para o projeto Android. ART como o tempo de execução executa o formato Dalvik Executable e a especificação de bytecode Dex.

ART e Dalvik são tempos de execução compatíveis que executam bytecode Dex, portanto, os aplicativos desenvolvidos para Dalvik devem funcionar quando executados com ART. No entanto, algumas técnicas que funcionam em Dalvik não funcionam em 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 verificação de tempo de instalação mais restrita do que o 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 executável de aplicativo compilado para o dispositivo de destino. O utilitário deve ser capaz de 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 pela Dalvik, mas não podem ser compilados pela ART. Para obter mais informações, consulte Resolvendo problemas de coleta de lixo .

Melhor coleta de lixo

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

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

Melhorias de desenvolvimento e depuração

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

Suporte para gerador de perfil de amostragem

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

ART adiciona suporte para um profiler de amostragem dedicado que não tem essas limitações. Isso oferece uma visão mais precisa da execução do aplicativo sem lentidão significativa. Suporte de amostragem foi adicionado ao Traceview for Dalvik na versão KitKat.

Suporte para mais recursos de depuração

O ART oferece suporte a uma série de 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 em rastreamentos de pilha e, em seguida, vá para o encadeamento que contém um bloqueio.
  • Pergunte quantas instâncias ativas existem de uma determinada classe, peça para ver as instâncias e ver quais referências estão mantendo um objeto ativo.
  • Filtrar 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 de “saída de método”).
  • Defina o ponto de controle 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. ART fornece detalhes de exceção expandida para java.lang.ClassCastException , java.lang.ClassNotFoundException e java.lang.NullPointerException . (Versões posteriores do Dalvik forneciam detalhes de exceção expandida para java.lang.ArrayIndexOutOfBoundsException e java.lang.ArrayStoreException , que agora incluem o tamanho da matriz e o deslocamento fora dos limites, e ART também faz isso.)

Por exemplo, java.lang.NullPointerException agora mostra informações sobre o que o aplicativo estava tentando fazer com o ponteiro nulo, como o campo no qual 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 em relatórios de falhas nativas do aplicativo, incluindo Java e informações de pilha nativas.

Problemas de relatório

Se você encontrar algum problema que não seja devido a problemas de JNI do aplicativo, relate-o por meio do Android Open Source Project Issue Tracker . Inclua um adb bugreport e um link para o aplicativo na Google Play Store, se disponível. Caso contrário, se possível, anexe um APK que reproduza o problema.