Android runtime (ART) é o runtime gerenciado usado por aplicações e alguns serviços de sistema em Android. ART e seu antecessor Dalvik foram originalmente criados especificamente para o projeto Android. ART as the runtime executes the DalvikExecutable format and Dex bytecode specification.
ART e Dalvik são períodos de execução compatíveis em execução Dex bytecode, por isso os aplicativos desenvolvidos para Dalvik devem trabalhar quando em execução com arte. No entanto, algumas técnicas que trabalham em Dalvik não funcionam na arte. Para obter informações sobre as questões mais importantes, consulte o comportamento do Verificadorapp no tempo de execução do Android (ART).
características de arte
Aqui estão algumas das principais características implementadas pela arte.
Compilação antecipada (AOT)
ART introduz compilação antecipada (AOT), o que pode melhorar o desempenho. ART também tem verificação de tempo de instalação mais apertado do que Dalvik.
no momento da instalação, o ART compila aplicativos usando a ferramenta on-devicedex2oat. Este utilitário aceita ficheiros DEX como entrada e executável app compilado pela generatesa para o dispositivo alvo. O utilitário deve ser capaz de completar todos os arquivos DEX válidos sem dificuldade. No entanto, alguns Ferramentas pós-processamento produzem arquivos inválidos que podem ser tolerados por Dalvik, mas não podem ser complementados pela arte. Para mais informações, consulte os problemas de recolha de embalagens.
recolha de lixo melhorada
recolha de lixo (GC) é muito intensiva em recursos, o que pode prejudicar o desempenho de um aplicativo,resultando em display de picadas, má capacidade de resposta UI, e outros problemas. A arte melhora a coleta de garbag de várias maneiras:
- Principalmente com projetos simultâneos com um único GC pausa
- Simultâneas copiar para reduzir o fundo de uso de memória e fragmentação
- O comprimento do GC pausa é independente do tamanho da pilha
- Coletor com total inferior GC tempo para o caso especial de limpeza recentemente atribuída, de curta duração objetos
- melhorar a coleta de lixo ergonomia, tornando simultâneas de coleta de lixo mais oportuna, o que faz
GC_FOR_ALLOC
eventos extremamente raros na típico de casos de uso
Desenvolvimento e depuração de melhorias
ARTE oferece um número de recursos para melhorar o desenvolvimento de aplicativos e depuração.
Suporte para o profiler de amostragem
historicamente, os desenvolvedores têm usado o Traceviewtool (projetado para a execução de aplicação de rastreamento) como um profiler. Enquanto Traceview fornece informações úteis, seus resultados sobre Dalvik foram distorcidos pela sobrecarga de chamada por método, e a utilização da ferramenta afeta visivelmente o desempenho do tempo de execução.
ART adiciona suporte para um analista de amostragem dedicado que não tem estas limitações. Isto dá uma visão mais precisa da execução da aplicação sem uma desaceleração significativa. O Suporte de amostragem foi adicionado ao Traceview forDalvik no lançamento do KitKat.
Suporte para mais recursos de depuração
ART suporta uma série de novas opções de depuração, particularmente na funcionalidade relacionada com a coleção monitor – andgarbage. Por exemplo, você pode:
- veja que fechaduras são mantidos em traços de pilha, em seguida, saltar para o fio que segura uma fechadura.
- pergunte quantas instâncias vivas existem de uma determinada classe, peça para ver as instâncias, e veja que referências estão mantendo um objeto vivo.
- filter events (like breakpoint) for a specific instance.
- See the value returned by a method when it Saídas (using “method-exit” events).
- Set field watchpoint to suspend the execution of a program when a specific field is accessed and / or modified.
aperfeiçoamento dos detalhes diagnósticos em exceções e relatórios de acidentes
ART dá-lhe o máximo de contexto e detalhe possível quando o tempo de execução exceptionsocur. ART provides expanded exception detail for java.lang.ClassCastException
,java.lang.ClassNotFoundException
, and java.lang.NullPointerException
.(Versões posteriores de Dalvik forneceram detalhes de exceção expandidos para java.lang.ArrayIndexOutOfBoundsException
e java.lang.ArrayStoreException
,que agora incluem o tamanho do array e o off-of-bounds offset, e Artdes this as well.)
por exemplo, java.lang.NullPointerException
agora mostra informações sobre o que o aplicativo estava tentando fazer com o ponteiro nulo,como o campo para o qual o aplicativo estava tentando escrever, ou o método para o qual ele estava tentando ligar. Aqui estão alguns exemplos típicos:
java.lang.NullPointerException: Attempt to write to field 'intandroid.accessibilityservice.AccessibilityServiceInfo.flags' on a null objectreference
java.lang.NullPointerException: Attempt to invoke virtual method'java.lang.String java.lang.Object.toString()' on a null object reference
ART também fornece informação de contexto melhorada em relatórios de crash native do aplicativo, incluindo tanto Java e informações nativas da pilha.