Dalvik VM과 ART (Android 런타임) : 최종 사용자에게 미치는 영향?


22

Google은 Nexus 5 (Android 4.4 KitKat)와 함께 앱을 실행하기 위해 두 개의 런타임을 제공했습니다.

Android 4.4 KitKat에서 런타임 옵션 선택 Android 4.4 KitKat의 Dalvik 및 ART 런타임

최종 사용자에 대한 Dalvik과 ART의 차이점은 무엇입니까? 최종 사용자는 이로 인해 어떻게 영향을받을 수 있습니까? 새로운 ART 런타임을 선택해야하는 특별한 이유가 있습니까?


3
옵션 을 찾기 위해 개발자 옵션 을 사용하여 검색해야한다는 사실 은 최종 사용자를위한 것이 아니라는 암시입니다.
Dan Hulme

1
@ DanHulme 좋은 지적이지만 여전히 개발자가 아닌 애호가는 개발자 옵션을 사용하며 긍정적 인 비 개발 목적으로 여러 번 사용합니다.
안드로이드 Quesito

사용자 경험이 핵심이라면 배터리 전력이 크게 절약된다는 것을 알 수 있지만 Dalvik에서 ART로 전환하는 동안 속도 차이를 볼 수는 없습니다.
Rahul Raina

답변:


26

Dalvik VM (Virtual Machine)은 Google의 Java VM 버전 (앱이 실행되는)입니다. VM은 앱을 실제 하드웨어 및 기타 앱과 분리하여 독립적으로 유지합니다. 그러나 이것이 작동하려면 Dalvik은 소위 바이트 코드 (가상 머신 용으로 설계)를 기본 머신 코드로 변환해야합니다. 바이트 코드에서 네이티브 코드로 변환 할 때 발생하는 성능 저하를 최소화하기 위해 JIT (Just-In-Time) 컴파일 프로세스가 수행되어 핫 (즉, 자주 사용되는) 바이트 코드를 네이티브 코드로 변환합니다. 1

ART (Android Runtime)는 AOT (Ahead-Of-Time) 컴파일을 사용하는 Dalvik을 대체합니다. 즉, 앱을 실행하기 전에 실행 준비 상태로 컴파일됩니다. 이는 일반적으로 앱 설치시 수행되어 훨씬 빠르고 원활하게 시작하고 사용하는 프로세스를 만듭니다. 그리고 이것은 컴파일이 한 번만 수행됨을 의미하기 때문에 배터리 수명도 향상 될 수 있습니다.

성능 및 배터리 수명 측면에서 ART가 더 좋으면 사용을 시작해야합니까?

아니요. 그렇게하면 타사 앱이 손상 될 수 있습니다. Google은 개발자가 앱을 테스트 할 수 있도록이 ART 미리보기를 Android 4.4와 함께 제공했습니다.

참고 : ART에 대한 Google의 접근 방식은 iOS를 능가하는 것입니다 (iOS 앱은 기본이므로 저사양 하드웨어 사양에서도 더 잘 수행됩니다). 나는 그것이 어디로 향하고 있는지 모르겠습니다 ... OEM이 하나 또는 둘 다를 사용하여 장치를 자유롭게 구축 할 수 있음을 참조하십시오 . 최종 버전은 대부분의 앱에 영향을 미치지 않지만 100 % 크로스 플랫폼에는 영향을 미치지 않습니다.

1 JIT는 Android 2.2에서 Dalvik에 추가되었습니다.


3
ART의 AOT는 DEX에 비해 20..25 % 더 많은 스토리지를 사용하는 앱을 제공합니다. 내가 읽은 Nexus-5의 테스트 결과 주관적인 속도와 배터리 내구성에 차이가 없었습니다. KitKat의 ART가 개발자의 미리보기 및 호환성 검사 (예 : WhatsApp 실패)임을 고려하면 둘 다 확실히 향상 될 것입니다. Sachin의 결론은 두 번째입니다. 아직 최종 사용자에게는 좋지 않습니다.
Izzy

2
훌륭한 답변입니다. 나는 그것을 조금 개선하기 위해 자유를 가져 갔다. 그러나 마지막 단락에 동의하지 않습니다. ART는 조각화를 증가시키지 않습니다. ART가 프로덕션 준비가 된 것으로 간주되는 경우 Dalvik 또는 ART에서 앱을 실행하는지 여부는 중요하지 않으며 둘 다 시작점과 동일한 .dex 형식을 사용합니다. 해당 ART만이 AOT가 .dex를 기본 코드로 컴파일합니다.
Flow
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.