Software:Android Runtime

From HandWiki
Short description: Runtime environment used by Android
Android Runtime
Written inC, C++
Operating systemAndroid
TypeRuntime environment
LicenseApache License 2.0[1]

Android Runtime (ART) is an application runtime environment used by the Android operating system. Replacing Dalvik, the process virtual machine originally used by Android, ART performs the translation of the application's bytecode into native instructions that are later executed by the device's runtime environment.[2]


A comparison of Dalvik and ART architectures

Android 2.2 "Froyo" brought trace-based just-in-time (JIT) compilation into Dalvik, optimizing the execution of applications by continually profiling applications each time they run and dynamically compiling frequently executed short segments of their bytecode into native machine code. While Dalvik interprets the rest of application's bytecode, native execution of those short bytecode segments, called "traces", provides significant performance improvements.[3][4]

Unlike Dalvik, ART introduces the use of ahead-of-time (AOT) compilation by compiling entire applications into native machine code upon their installation. By eliminating Dalvik's interpretation and trace-based JIT compilation, ART improves the overall execution efficiency and reduces power consumption, which results in improved battery autonomy on mobile devices. At the same time, ART brings faster execution of applications, improved memory allocation and garbage collection (GC) mechanisms, new applications debugging features, and more accurate high-level profiling of applications.[2][5][6]

To maintain backward compatibility, ART uses the same input bytecode as Dalvik, supplied through standard .dex files as part of APK files, while the .odex files are replaced with Executable and Linkable Format (ELF) executables. Once an application is compiled by using ART's on-device dex2oat utility, it is run solely from the compiled ELF executable; as a result, ART eliminates various application execution overheads associated with Dalvik's interpretation and trace-based JIT compilation. A disadvantage of ART is that additional time is required for compilation when an application is installed, and applications take up slightly more secondary storage (usually flash memory) to store the compiled code.[2][5][6]

Android 4.4 "KitKat" brought a technology preview of ART, including it as an alternative runtime environment and keeping Dalvik as the default virtual machine.[7][8] In the subsequent major Android release, Android 5.0 "Lollipop", Dalvik was entirely replaced by ART.

Android 7.0 "Nougat" switched its Java Runtime Environment from the discontinued Apache Harmony to OpenJDK, introducing a JIT compiler with code profiling to ART, which lets it constantly improve the performance of Android apps as they run.[9] The JIT compiler complements ART's current ahead-of-time compiler and helps improve runtime performance, and save storage space by only compiling some parts of the apps.[10][11]

Android 9 "Pie" reduced the amount of storage used by APKs by using compressed bytecode files, and profiler data can be uploaded to Google Play servers to be bundled with apps when downloaded by users with a similar device which shortened download time from Google Play by up to 40%.[12]

Android 13 ART will be updated with a new garbage collector (GC) utilizing the Linux userfaultfd system call.[13][14][15] It reduces memory pressure, compiled code size, jank and prevents the risk of killing apps because of low memory during GC.[15] Other changes also improve app startup, reduce jank and improve performance.[15] Because of the Mainline project, Android 12 ART will also be updated.[13]

See also


  1. "NOTICE - platform/art - Git at Google". 
  2. 2.0 2.1 2.2 Andrei Frumusanu (July 1, 2014). "A Closer Look at Android RunTime (ART) in Android L". AnandTech. 
  3. "A JIT Compiler for Android's Dalvik VM". Google. May 2010. pp. 5–14. 
  4. Phil Nickinson (May 26, 2010). "Google Android developer explains more about Dalvik and the JIT in Froyo". 
  5. 5.0 5.1 "Android Developers: ART and Dalvik". March 9, 2015. 
  6. 6.0 6.1 "Android Developers: Configuring ART – How ART works". March 9, 2015. 
  7. Sean Buckley (November 6, 2013). "'ART' experiment in Android KitKat improves battery life and speeds up apps". Engadget. 
  8. Daniel P. (November 7, 2013). "Experimental Google ART runtime in Android KitKat can bring twice faster app executions". 
  9. "Android 7.0 for Developers" (in en). 
  10. Amadeo, Ron (2016-08-22). "Android 7.0 Nougat review—Do more on your gigantic smartphone" (in en-us). 
  11. "Implementing ART Just-In-Time (JIT) Compiler". January 22, 2017. 
  12. Amadeo, Ron (2018-09-13). "Android 9 Pie, thoroughly reviewed" (in en-us). 
  13. 13.0 13.1 Gidra, Lokesh (in en), What's new in app performance,, retrieved 2022-08-16 
  14. Gidra, Lokesh; Boehm, Hans-J.; Fernandes, Joel (2020-10-12). "Utilizing the Linux Userfaultfd System Call in a Compaction Phase of a Garbage Collection Process". Defensive Publications Series. 
  15. 15.0 15.1 15.2 "Android 13 is in AOSP!" (in en). 

External links