stringtranslate.com

Tiempo de ejecución de Android

Android Runtime ( ART ) es un entorno de ejecución de aplicaciones utilizado por el sistema operativo Android . Al reemplazar a Dalvik , la máquina virtual de proceso utilizada originalmente por Android, ART realiza la traducción del código de bytes de la aplicación en instrucciones nativas que luego son ejecutadas por el entorno de ejecución del dispositivo. [2]

Descripción general

Una comparación de las arquitecturas Dalvik y ART

Android 2.2 "Froyo" trajo la compilación justo a tiempo (JIT) basada en trazas a Dalvik, optimizando la ejecución de aplicaciones perfilando continuamente las aplicaciones cada vez que se ejecutan y compilando dinámicamente segmentos cortos de su código de bytes ejecutados con frecuencia en código de máquina nativo . Mientras Dalvik interpreta el resto del código de bytes de una aplicación, la ejecución nativa de esos segmentos cortos de código de bytes, llamados "rastros", proporciona mejoras significativas en el rendimiento. [3] [4]

A diferencia de Dalvik, ART introduce el uso de compilación anticipada (AOT) al compilar aplicaciones completas en código de máquina nativo tras su instalación. Al eliminar la interpretación de Dalvik y la compilación JIT basada en seguimiento, ART mejora la eficiencia de ejecución general y reduce el consumo de energía, lo que resulta en una mayor autonomía de la batería en los dispositivos móviles . Al mismo tiempo, ART ofrece una ejecución más rápida de aplicaciones, mecanismos mejorados de asignación de memoria y recolección de basura (GC), nuevas funciones de depuración de aplicaciones y perfiles de aplicaciones de alto nivel más precisos. [2] [5] [6]

Para mantener la compatibilidad con versiones anteriores , ART utiliza el mismo código de bytes de entrada que Dalvik, suministrado a través de archivos .dex estándar como parte de archivos APK , mientras que los archivos .odex se reemplazan con ejecutables de formato ejecutable y vinculable (ELF). Una vez que se compila una aplicación utilizando la utilidad dex2oat en el dispositivo de ART , se ejecuta únicamente desde el ejecutable ELF compilado; Como resultado, ART elimina varios gastos generales de ejecución de aplicaciones asociados con la interpretación de Dalvik y la compilación JIT basada en seguimiento. Una desventaja de ART es que se requiere tiempo adicional para la compilación cuando se instala una aplicación, y las aplicaciones ocupan un poco más de almacenamiento secundario (generalmente memoria flash ) para almacenar el código compilado. [2] [5] [6]

Historia

Android 4.4 "KitKat" introdujo una vista previa de la tecnología ART como un entorno de ejecución alternativo a Dalvik, que seguía siendo la máquina virtual predeterminada. [7] [8] En la siguiente versión importante de Android, Android 5.0 "Lollipop" , Dalvik fue reemplazado por completo por ART.

Android 7.0 "Nougat" cambió su Java Runtime Environment del descontinuado Apache Harmony a OpenJDK , introduciendo un compilador JIT con perfilado de código para ART, que le permite mejorar constantemente el rendimiento de las aplicaciones de Android mientras se ejecutan. [9] El compilador JIT complementa el compilador AOT de ART, ayudando a mejorar el rendimiento en tiempo de ejecución y ahorrar espacio de almacenamiento al identificar el "código activo" (código que se usa con frecuencia, se ejecuta en el subproceso de la interfaz de usuario o afecta el tiempo de inicio), en el que compila el compilador AOT. código de máquina mientras el dispositivo está inactivo y cargándose. El código utilizado con menos frecuencia se basa en la compilación JIT. [10] [11]

Android 9 "Pie" redujo la cantidad de almacenamiento utilizado por los APK mediante el uso de archivos de código de bytes comprimidos , y los datos del perfilador se pueden cargar en los servidores de Google Play para incluirlos con aplicaciones cuando los usuarios los descargan con un dispositivo similar, lo que acorta el tiempo de descarga de Google Play. hasta en un 40%. Los perfiles en la nube de Google Play permiten optimizar las aplicaciones durante la instalación, lo que ayuda a evitar los problemas de rendimiento iniciales presentes en Android 7.0 a 8.1. [12]

En julio de 2021 [13] se introdujo el concepto de perfiles de referencia. Los perfiles de referencia son perfiles ART que definen métodos y clases que deben someterse a una compilación AOT desde el primer lanzamiento de una aplicación y son compatibles con Android 7.0 y versiones posteriores. Proporcionan una funcionalidad similar a los perfiles en la nube de Google Play de Android 9 cuando no están disponibles y se fusionan automáticamente con los perfiles en la nube cuando están disponibles. [14]

ART se actualizó con un nuevo recolector de basura (GC) que utiliza la llamada al sistema userfaultfd de Linux en Android 13 . [15] [16] [17] Reduce la presión de la memoria, el tamaño del código compilado y los bloqueos , y evita el riesgo de cerrar aplicaciones debido a la poca memoria durante la recolección de basura . [17] Otros cambios también mejoran el inicio de la aplicación, reducen los bloqueos y mejoran el rendimiento. [17] Debido al proyecto Mainline, ART de Android 12 también se actualizará. [15]

Ver también

Referencias

  1. ^ "AVISO - plataforma/arte - Git en Google". Archivado desde el original el 4 de marzo de 2023 . Consultado el 25 de junio de 2021 .
  2. ^ abc Andrei Frumusanu (1 de julio de 2014). "Una mirada más cercana a Android RunTime (ART) en Android L". AnandTech . Archivado desde el original el 5 de julio de 2014 . Consultado el 5 de julio de 2014 .
  3. ^ Ben Cheng; Bill Buzbee (mayo de 2010). "Un compilador JIT para la máquina virtual Dalvik de Android" (PDF) . android-app-developer.co.uk . Google . págs. 5-14. Archivado desde el original (PDF) el 6 de noviembre de 2015 . Consultado el 18 de marzo de 2015 .
  4. ^ Phil Nickinson (26 de mayo de 2010). "El desarrollador de Google Android explica más sobre Dalvik y el JIT en Froyo". androidcentral.com . Archivado desde el original el 8 de abril de 2017 . Consultado el 8 de julio de 2014 .
  5. ^ ab "Desarrolladores de Android: ART y Dalvik". fuente.android.com . 9 de marzo de 2015. Archivado desde el original el 15 de marzo de 2015 . Consultado el 18 de marzo de 2015 .
  6. ^ ab "Desarrolladores de Android: configuración de ART: cómo funciona ART". fuente.android.com . 9 de marzo de 2015 . Consultado el 18 de marzo de 2015 .
  7. ^ Sean Buckley (6 de noviembre de 2013). "'El experimento ART en Android KitKat mejora la duración de la batería y acelera las aplicaciones ". Engadget . Archivado desde el original el 27 de enero de 2017 . Consultado el 5 de julio de 2014 .
  8. ^ Daniel P. (7 de noviembre de 2013). "El tiempo de ejecución experimental de Google ART en Android KitKat puede generar ejecuciones de aplicaciones dos veces más rápidas". phonearena.com . Archivado desde el original el 7 de julio de 2014 . Consultado el 5 de julio de 2014 .
  9. ^ "Android 7.0 para desarrolladores". Desarrolladores de Android . Consultado el 22 de marzo de 2021 .
  10. ^ Amadeo, Ron (22 de agosto de 2016). "Revisión de Android 7.0 Nougat: haga más en su gigantesco teléfono inteligente". Ars Técnica . Consultado el 5 de abril de 2023 .
  11. ^ "Implementación del compilador ART Justo a tiempo (JIT)". fuente.android.com . 22 de enero de 2017. Archivado desde el original el 8 de agosto de 2023 . Consultado el 22 de enero de 2017 .
  12. ^ Amadeo, Ron (13 de septiembre de 2018). "Android 9 Pie, revisado minuciosamente". Ars Técnica . Archivado desde el original el 30 de noviembre de 2018 . Consultado el 16 de agosto de 2022 .
  13. ^ "ProfileInstaller | Jetpack". Desarrolladores de Android . Archivado desde el original el 8 de agosto de 2023 . Consultado el 5 de julio de 2023 .
  14. ^ Semenova, Kateryna; Ravikumar, Rahul; Craik, Chris (28 de enero de 2022). "Mejora del rendimiento de las aplicaciones con perfiles básicos". Blog de desarrolladores de Android . Archivado desde el original el 8 de agosto de 2023 . Consultado el 5 de julio de 2023 .
  15. ^ ab Gidra, Lokesh, Novedades en el rendimiento de la aplicación, archivado desde el original el 16 de agosto de 2022 , consultado el 16 de agosto de 2022
  16. ^ Gidra, Lokesh; Boehm, Hans-J.; Fernandes, Joel (12 de octubre de 2020). "Utilización de la llamada al sistema Userfaultfd de Linux en una fase de compactación de un proceso de recolección de basura". Serie de publicaciones defensivas . Archivado desde el original el 16 de agosto de 2022 . Consultado el 16 de agosto de 2022 .
  17. ^ abc "¡Android 13 está en AOSP!". Blog de desarrolladores de Android . Archivado desde el original el 15 de agosto de 2022 . Consultado el 16 de agosto de 2022 .

enlaces externos