Android ) Zygote

Android 2014. 6. 11. 17:26 Posted by gaeddong2

달빅(Dalvik Vitrual Machine)

java는 OS위에서 바로 돌아가는 다른 언어와 달리 소스코드를 바이트 코드라는 중간언어로 변환 후 실행하낟. 

실행 시 OS위에 존재하는 Virutual Machine을 기반으로 동작한다.


안드로이드에서도 VM 대신 PC에서 일반적으로 사용되는 SUN의 JAVA ME의 VM이 아닌 구글에서 독자적으로 개발한 달빅 가상 머신을 사용한다.


Zygote

  • Zygote 프로세스는 실행되면서 달빅(Dalvik) 가상 머신을 초기화하고 구동시킨다. 
  • Zygote 프로세스는 애플리케이션이 실행 되기 전에 실행된 가상 머신의 코드 및 메모리 정보를 공유함으로써 애플리케이션이 실행되는 시간을 단축시킨다.
  • 안드로이드 프레임워크에서 동작하는 애플리케이션이 사용할 클래스와 자원을 미리 메모리에 로딩해 두고 이러한 자원에 대한 연결 정보를 구성한다. 
필요한 자원들에 대한 연결정보를 매번 새롭게 구성하지 않고 그대로 사용하기 때문에 빠르게 실행된다.

app_process

자바로 작성돼 있는 Zygote 클래스가 동작하려면 달빅 가상 머신이 생성돼야 하고, 생성된 가상 머신 위에서 ZygoteInit 클래스를 로딩하고 실행해야 한다. 이러한 작업을 수행하는 프로세스를 app_process라 한다.