It is a new android run-time replacing Dalvik.
Dalvik is a JIT’ing VM (converts to native code on the fly)
- JIT compiler runs while you are using your app, adding latency and memory pressure.
- The upside is that the JIT compiler can look at how you are using your code to perform profile-directed optimizations
Some of the major features of ART:
- Ahead of time compilation — process of converting C, C++, intermediate class files into machine executable code.
- At install time, ART compiles apps using the on-device dex2oat tool. This utility accepts DEX files as input and generates a compiled app executable for the target device.
- tighter install-time verification than Dalvik.
- the apps are compiled to native code once. Therefore no byte-code is stored on our phones. Everything is native.
- no profile-directed optimizations
- reduces memory footprint and requires more disk space
Improved Garbage Collection
- lower GC time for first generation objects.
- one big pause is there instead of two.
- parallel GC — more than one thread doing GC.
- concurrent garbage collections more timely.
- GC itself takes less background memory usage and fragmentation.
Note: Stop the world GC pause time duration might be worse (or improved) — no idea.