ART of Q

ART of Q

In this lightning talk. I will summarize the content of a session "Understanding Android Runtime (ART) for Faster Apps" at Google I/O '19.

[Reference]
- Understanding Android Runtime (ART) for Faster Apps (Google I/O'19) - YouTube: https://www.youtube.com/watch?v=1uLzSXWWfDg
- Cloud profiles: https://youtu.be/1uLzSXWWfDg?t=210
- Application images: https://youtu.be/1uLzSXWWfDg?t=368
- Application images: https://youtu.be/1uLzSXWWfDg?t=440
- StartupAnalyzerKt: https://android.googlesource.com/platform/tools/trebuchet/
- Activity#reportFullyDrawn(): https://developer.android.com/reference/android/app/Activity#reportFullyDrawn()
- Trash Talk (Android Dev Summit '18) - YouTube: https://www.youtube.com/watch?v=Zc4JP8kNGmQ&feature=youtu.be

979d93b360f80486b121486a9d063ad5?s=128

Hiroshi Kurokawa

May 21, 2019
Tweet

Transcript

  1. ART of Q 2019-05-21 (mixi & CA).aab Hiroshi Kurokawa

  2. Understanding Android Runtime (ART) for Faster Apps https://www.youtube.com/watch?v=1uLzSXWWfDg

  3. Improvements in ART • App Startup Time • Garbage Collection

  4. Improvements in ART • App Startup Time • Garbage Collection

  5. Cloud profiles https://youtu.be/1uLzSXWWfDg?t=210

  6. Application images https://youtu.be/1uLzSXWWfDg?t=368

  7. Application images https://youtu.be/1uLzSXWWfDg?t=440

  8. Unspecialized app process pool System Server Zygote App Process Fork

  9. Unspecialized app process pool System Server Unspecialized App Process

  10. Analyzing startup time • StartupAnalyzerKt
 https://android.googlesource.com/platform/tools/ trebuchet/ • Use Activity#reportFullyDrawn()


    https://developer.android.com/reference/android/app/ Activity#reportFullyDrawn()
  11. Improvements in ART • App Startup Time • Garbage Collection

  12. Generational Concurrent Compaction

  13. CC Root reachable unreachable

  14. CC Root To Space Evacuated Region

  15. Generational CC Younger Generation Older Generation Full-heap
 GC Young-gen GC

  16. Generational CC Younger Generation Older Generation

  17. 2-phase collection

  18. 2-phase collection • For full-heap GC • Trace live objects

    and compute liveness stat • Evacuate regions based on up-to-date stats
  19. Object pooling • In most cases, it doesn’t make sense

    • Even if you are sure it improves the performance, it would be better to measure the performance
  20. Reference https://youtu.be/Zc4JP8kNGmQ