본문 바로가기
Android

[안드로이드] ART

by Sky Titan 2020. 8. 23.
728x90

※참조

 

디벨로이드 가이드 : 안드로이드 런타임(Android Rumtime)

안드로이드 런타임(Android Rumtime) 런타임(Runtime)이란? 애플리케이션을 관리하기 위해서 특정한 컴파일러나 가상머신이 사용하는 기본 코드 라이브러리 또는 애플리케이션이 실행되고 있는 동안��

develoid.github.io

 

런타임 (Runtime)

  • 애플리케이션을 관리 (메모리, 프로세스) 하기 위해 컴파일러나 가상머신이 사용하는 기존 코드 라이브러리
  • 혹은 프로그램이 실행되고 있는 동안의 동작

 

런타임 환경 (Runtime Environment)

  • 애플리케이션을 위한 서비스를 제공하는 가상머신 상태

 

자바 vs 네이티브 언어

  • 일반적인 네이티브 언어들은 ( ex : C언어 ) 특정 CPU, OS에 따라 맞추어 기계어로 컴파일됨
  • 자바는 자바 컴파일러가 생성한 바이트 코드를 JVM(자바가상머신)에 올리면 한 번의 컴파일로 여러 환경에서 사용이 가능
  • 하지만 자바는 그만큼 느리다.
  • 자바의 JVM을 안드로이드 환경에 맞추어 개발한 것이 달빅 VM과 ART이다.

 

달빅 VM (Dalvik VM)

  • JIT (Just In Time) 컴파일러를 사용
  • 최초 앱 실행 시 자바코드 일부를 한꺼번에 변환 후 RAM에 올려서 사용 (매번 필요한 부분만 컴파일)
  • 단점 : JIT 컴파일러가 실행 되는 동안 하드웨어 부하 증가 -> 배터리 소모량이 커짐, 애플리케이션 실행 시 RAM에 상주되어야 하기에 RAM 사용량 증가

 

안드로이드 런타임 (ART)

  • AOT (Ahead Of Time) 컴파일러를 사용
  • 앱 설치 시 컴파일하여 바이트 코드 생성 -> 앱 실행 시 읽어들임
  • 단점 : 설치 공간이 달빅에 비해 1.5~2배 필요, 애플리케이션 설치 시간 증가

ART의 위치

 

728x90

댓글