Boot images loading (boot.oat, boot.art)
========================================

When Android boots up, it loads some `boot images` which contain some frequently used classes. In particular `boot.oat` contains the code of the classes, and `boot.art` some pre-initialized heap.
This speedups application launch, and saves some memory due to the paging mechanism. (More details [here](https://source.android.com/devices/tech/dalvik/configure.html))

Zygote preloading
=================

In ZygoteInit.java, there is a [preload](http://androidxref.com/6.0.1_r10/xref/frameworks/base/core/java/com/android/internal/os/ZygoteInit.java#180) function.
It preloads classes, resources, shared libraries, etc.
`preloadClasses` in particular loads the classes found in:
`/system/etc/preloaded-classes`. Which basically causes the static initializers of these classes run.

How they differ?
================

What is the difference between the two?
Isn't the sole purpose of `boot.art` to avoid the explicit initialization that is done by zygote`s`preload`?

Shouldn't the zygote's `preload` run only for `imageless` bootup?