ART 이해하기

Posted by Eun JongHyeok on December 14, 2020
  1. ART
    1. 런타임
    2. 간단 설명
    3. Dalvik
    4. 추가사항
    5. Reference

안드로이드 서적을 읽던 중 ART에 대한 이해가 필요하다 느껴 정리합니다. 의식의 흐름대로 풀이하였습니다.

ART

ART는 Android Runtime의 약자입니다.

런타임

런타임을 그냥 변역하면 실행 시간이 됩니다. 하지만 요기서의 의미는 런타임 시스템 또는 런타임 환경이라 생각합니다. 간단하게 말하면 실행 중인 프로그램을 서포트하는 모든 자원들을 말합니다.

간단 설명

책을 읽던 중 처음 나온 설명은 안드로이드를 모바일 리눅스가 아닌 안드로이드 답게 만들어 준다는 것이였습니다. 리눅스 커널 위에서 휴대폰의 메모리, 프로세스 관리 등을 수행해주는데 흔히 아는 운영체제의 역활을 수행해준다 생각하였습니다. 이전에는 Dalvik이라는 가상 머신이 있었는데 대체되었고 ART는 런타임으로써 .dex 파일을 실행해 줍니다.

Dalvik

달빅이 무엇이지 알기전에 안드로이드는 JVM을 사용하지 않는다는 것을 알아야합니다. 그렇다면 java는 컴파일을 거친후 JVM을 대신하여 다른 것을 통해 동작시킬텐데 안드로이드 초기에 사용했던 것이 바로 달빅입니다. 자바 파일을 자바 클래스 파일로 컴파일 한 뒤 SDK를 통해 .dex 포맷으로 변경한 후 실행시킵니다.

JVM을 사용하지 않은 이유에 대해서는 라이센스 문제라고 합니다.

AOT 컴파일 도입

달빅은 JIT 컴파일을 사용되었고 ART에서는 최적화를 위해 둘 다 사용됩니다.
링크
다른 자세한 비교는 개발자 사이트를 참고하면 좋을 것 같습니다.
안드로이드 개발자 사이트

JIT Complie

실행 시간에 바이트 코드를 기계어로 번역하여 RAM에 올립니다.

AOT Complie

앱을 설치할 때 dex2oat 도구를 사용하여 컴파일합니다. Dex 파일을 입력받아 컴파일된 앱을 생성합니다.

결과적으로 설치시에는 더 오래 걸리고 용량도 커지지만 실행시간에는 훨씬 나은 성능을 얻을 수 있습니다. 램도 더 적게 차지합니다.

추가사항

잘 정리된 블로그도 참고합니다. 플로 차트를 보니 쉽게 이해되네요.

Reference

안드로이드 개발자 사이트
참고 블로그


Android
ART
Dalvik

Next Post