Android Application fundamentals Process Virtual Machine I just started on application development and wanted to learn properly everything about how Android works.

I came across four bullet points (https://developer.android.com/guide/components/fundamentals) that explain that Android sets each app as a different Linux user and that each process has its own virtual machine (VM). Here's the part confusing me, one of the bullet points (third one) doesn’t specify which process are encompassed in a virtual machine.


  • Each process has its own virtual machine (VM), so an app's code runs in isolation from other apps.


This is the first time on the page it mentions a process which is why I am confused.

My question is which processes are running in a virtual machine? 
- Is it the main Linux process only?
- is it ALL of the processes within the Linux process?

If so, how can processes communicate between each other if each one of them are running in isolation (in VM)?

Thank you for your time.
None of the apps are running in a virtual machine. Really, the page is trying to explain that there's a separate instance of the JVM for each application process. It's quite a misleading description.

FYI, there's no such thing as a "main Linux process". Linux is the kernel, which is not a process; rather, it is above all of the processes, in charge of creating, scheduling, and destroying them, and mediating their access to the hardware.