I am looking for any kind of website, blogpost, wiki, discussion, book, magazine, scientific paper, which on good authority could explain the internals of memory management in Android. I know very well that a big part is Linux and this is where I should go first, but Android has dalvik, which is, as far as I understand, deeply integrated with the Kernel, also, Android is unloading apps if it runs out of memory, which is probably what Linux does not do. So, I am looking for an authoritative answer about memory management in Android. Topics include, but are not limited to:
- How to interpret values from adb shell dumpsys meminfo, i.e. what is the meaning of each value: size, alloc, free, Pss, priv dirty, shared dirty, what kind of data is it stored there?
- What would be the best metric to evaluate memory consumption on the device?
- Where is each *.so loaded to? Or does Android have execution in place implemented?
- Are there any limits on how much memory an application can consume?
- Does OS assign a contiguous chunk of memory, which can grow as long as it is contiguous, or some kind of fragmentation is permitted?
- Etc.
There is a great answer in this thread How do I discover memory usage of my application in Android?, but I want some more in-depth explanation, thus asking for an external resource.