[Android] ART vs. Dalvik |
https://source.android.com/devices/tech/dalvik/
Ahead-of-time ( AOT ) compilation
-
ART 는 AOT compile 을 제공한다. 이는 install-time 은 더 오래 걸리지만, app 자체의 performance 는 더 향상된다.
Install time 에 ART 는 app 을 on-device dex2oat tool 을 이용해 compile 한다.
이 dex2oat 는 DEX 파일을 input 으로 받아서 target device 에 맞는 compiled app executable 을 생성해낸다.
( ART 이전에 개발된 앱들은 문제가 생길 수 있다. https://developer.android.com/guide/practices/verifying-apps-art.html )
GC 기능 향상
-
GC pause 가 2번에서 1번으로 줄음
GC pause 타임에 몇몇 작업은 concurrent 하게 돌 수 있음
Recently-allocated objects 나 short-lived objects 를 정리할 때는 더 성능이 좋다.
Concurrent GC 를 좀 더 자주 수행해서 GC_FOR_ALLOC 이 불리는 경우를 거의 없게 만들었다.
Memory compacting 을 제공한다.
개발과 디버깅 향상
Sampling profiler 제공
Traceview tool 을 사용할 때 runtime performance 에 영향을 받았다.
ART 는 sampling profiler 를 제공해서 앱 성능 저하를 줄이면서 필요한 정보를 보게 했다. Kitkat 부터 사용 가능하다.
Debugging features
stack trace 에서 어떤 lock 이 쓰였는지 볼 수 있고, lock 을 잡고 있는 thread 로 jump 할 수 있다.
지정한 class 에 대해 얼마나 많은 live instance 를 가지고 있는지 알 수 있고, 그것들을 볼수도 있고, 누가 그것을 참조하고 있는지도 볼 수 있다.
event filter( breakpoint 처럼 ) 를 할 수 있다.
method-exit event 를 이용해서 method return value 를 볼 수 있다.
field watchpoint 를 통해 특정 field 값의 get/set 에 대해 detect 할 수 있다.
향상된 exception, crash report 의 diagnostic detail
ClassCastException, ClassNotFoundException, NullPointerException 에 대해 더 자세한 정보를 제공한다.
<Prev>
java.lang.NullPointerException: Attempt to write to field 'int
android.accessibilityservice.AccessibilityServiceInfo.flags' on a null object
reference
<ART>
java.lang.NullPointerException: Attempt to invoke virtual method
'java.lang.String java.lang.Object.toString()' on a null object reference
기타
-
JNI issue 외에는 크게 report 된 이슈가 없다. 있다면 아래로 신고하면 된다.
https://source.android.com/source/report-bugs#platform
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android] APK Signature Scheme v2 (0) | 2018.11.21 |
---|---|
[android] Staged Rollout? (0) | 2018.10.12 |
[Android] ART 의 GC 이야기 (0) | 2018.10.10 |
Overview of Android Memory Management ( 안드로이드의 메모리 관리 ) (0) | 2018.10.09 |
[android] Background Optimization ( 백그라운드 최적화 ) (0) | 2018.10.08 |
댓글