๐Ÿƒ๐Ÿฝโ€โ™‚๏ธJVM, DVM, ART

sery270ยท2021๋…„ 3์›” 6์ผ
2

Android

๋ชฉ๋ก ๋ณด๊ธฐ
3/13

๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์— ์ตœ์ ํ™”๋œ ๋Ÿฐํƒ€์ž„์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด, ๊ธฐ์กด ์ž๋ฐ” ๊ฐ€์ƒ๋จธ์‹ ์ธ JVM์„ ๋Œ€์ฒดํ•˜์—ฌ DVM์ด ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ดํ›„ ์ด DVM์ด ์ง€๊ธˆ์˜ ART๋กœ ๋ฐœ์ „๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ํฐ ํ๋ฆ„์„ ๊ฐ€์ง€๊ณ , ์ด ๊ธ€์„ ํ†ตํ•ด ์œ„ ์„ธ๊ฐ€์ง€ ๋Ÿฐํƒ€์ž„ ๋ฐฉ๋ฒ•์„ ๊ฐœ๊ด„์ ์œผ๋กœ ์•Œ์•„๊ฐ€์‹œ๊ธธ ๋ฐ”๋ผ๊ฒ ์Šต๋‹ˆ๋‹ค. ์•— ! ๊ตฌ์ฒด์ ์ธ ๋Ÿฐํƒ€์ž„ ๊ตฌ์„ฑ๊ณผ ๋™์ž‘๋ฐฉ์‹์— ๋Œ€ํ•ด์„  ๋‹ค๋ฅธ ๊ธ€์—์„œ ๋” ๋‹ค์„ธํžˆ ๋‹ค๋ค„๋ณด๋„๋กํ• ํ…Œ๋‹ˆ, ๋‹ค์Œ ๊ธ€๋„ ๊ธฐ๋Œ€ํ•ด์ฃผ์„ธ์š” ! ๊ทธ๋Ÿผ ์˜ค๋Š˜๋„ ํ™”์ดํŒ… ์ž…๋‹ˆ๋‹ค ๐ŸŒฟ

1๏ธโƒฃ JVM ์ด๋ž€ ?


์ž๋ฐ” ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ์ฒด์ž…๋‹ˆ๋‹ค.

  • ๋ชจ๋“  ๊ธฐ๋ณธ ํƒ€์ž…์˜ ์ •์˜๋ฅผ ๋ช…ํ™•ํžˆ ํ•จ์œผ๋กœ์จ ํ”Œ๋žซํผ ๋…๋ฆฝ์„ฑ ๋ณด์žฅํ•ด์ค๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ํ๋ฆ„ ๋ถ„์„์— ๊ธฐ๋ฐ˜ํ•œ ์ž๋ฐ” ๋ฐ”์ดํŠธ์ฝ”๋“œ ๊ฒ€์ฆ๊ธฐ๋ฅผ ํ†ตํ•ด ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ์‹คํ–‰ ์ „์— ๊ฒ€์ฆํ•˜์—ฌ ์‹คํ–‰ ์‹œ ์•ˆ์ „์„ ๋ณด์žฅํ•˜๊ณ  ๋ณ„๋„์˜ ๋ถ€๋‹ด์„ ์ค„์—ฌ์ค๋‹ˆ๋‹ค.
    • ์Šคํƒ ์˜ค๋ฒ„ ํ”Œ๋กœ
    • ๋ช…๋ น์–ด ํ”ผ์—ฐ์‚ฐ์ž์˜ ํƒ€์ž… ๊ทœ์น™ ์œ„๋ฐ˜
    • ์ง€์—ญ ๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐํ™” ์ „ ์‚ฌ์šฉ
    • ํ•„๋“œ ์ ‘๊ทผ ๊ทœ์น™ ์œ„๋ฐ˜ ๋“ฑ
  • ์ž๋ฐ” ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ž€ ?
    • ํ”Œ๋žซํผ์— ๋…๋ฆฝ์ 
    • JVM์— ์˜์กด์ 
    • ํ•œ๋ฒˆ์˜ ๋นŒ๋“œ๋กœ ์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰๊ฐ€๋Šฅ (WORA : Write Once and Run Anywhere)

2๏ธโƒฃDVM ์ด๋ž€ ?


์ดˆ๊ธฐ Android Run Time์œผ๋กœ, Android 2.2 ์ดํ›„ trace JIT ์ปดํŒŒ์ผ๋Ÿฌ๋กœ ์ฒ˜์Œ ์ ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

JIT

  • ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•ด ๋ฏธ๋ฆฌ ์ปดํŒŒ์ผํ•˜์—ฌ ๊ธฐ๊ณ„์–ด๋กœ ํ•ด์„ํ•ด๋†“๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‹คํ–‰์‹œ์— ์ธํ„ฐํ”„๋ฆฌํŒ… ์‹œ์ž‘์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฐฉ์‹์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋„์ž…๋œ JIT ์ปดํŒŒ์ผ๋Ÿฌ์ž…๋‹ˆ๋‹ค. ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฐฉ์‹์œผ๋กœ ์‹คํ–‰ํ•˜๋‹ค๊ฐ€ ์ ์ ˆํ•œ ์‹œ์ ์— ๋ฐ”์ดํŠธ์ฝ”๋“œ ์ „์ฒด๋ฅผ ์ปดํŒŒ์ผํ•˜์—ฌ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ , ์ดํ›„์—๋Š” ํ•ด๋‹น ๋” ์ด์ƒ ์ธํ„ฐํ”„๋ฆฌํŒ… ํ•˜์ง€ ์•Š๊ณ  ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋กœ ์ง์ ‘ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋Š” ์บ์‹œ์— ๋ณด๊ด€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ๋ฒˆ ์ปดํŒŒ์ผ๋œ ์ฝ”๋“œ๋Š” ๋น ๋ฅด๊ฒŒ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค. ๋ฌผ๋ก  JIT์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ปดํŒŒ์ผํ•˜๋Š” ๊ณผ์ •์€ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ์ธํ„ฐํ”„๋ฆฌํŒ…ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ์˜ค๋ž˜๊ฑธ๋ฆฌ๋ฏ€๋กœ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ๋ผ๋ฉด ์ปดํŒŒ์ผํ•˜์ง€ ์•Š๊ณ  ์ธํ„ฐํ”„๋ฆฌํŒ…ํ•˜๋Š” ๊ฒƒ์ด ์œ ๋ฆฌํ•˜๋‹ค. ๋”ฐ๋ผ์„œ JIT ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” JVM๋“ค์€ ๋‚ด๋ถ€์ ์œผ๋กœ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ž์ฃผ ์ˆ˜ํ–‰๋˜๋Š”์ง€ ์ฒดํฌํ•˜๊ณ , ์ผ์ • ์ •๋„๋ฅผ ๋„˜์„ ๋•Œ์—๋งŒ ์ปดํŒŒ์ผ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

trace-JIT๋ž€?
Threshold๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ํ•ด์„ํ•œ๋‹ค. ์ฆ‰ ์–ด๋–ค ๊ตฌ๊ฐ„(ex. if๋ฌธ, for๋ฌธ)์ด ํŠน์ • ํšŸ์ˆ˜ ์ด์ƒ ๋ฐ˜๋ณต๋˜๋ฉด ์ปดํŒŒ์ผ

Interpreter(์ธํ„ฐํ”„๋ฆฌํ„ฐ)๋ž€?
์‹คํ–‰ ์—”์ง„์€ ์ž๋ฐ” ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ๋ช…๋ น์–ด ๋‹จ์œ„๋กœ ์ฝ์–ด์„œ ์‹คํ–‰ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฐฉ์‹์€ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด์˜ ๋‹จ์ ์„ ๊ทธ๋Œ€๋กœ ๊ฐ–๊ณ  ์žˆ๋‹ค. ํ•œ ์ค„ ์”ฉ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋Š๋ฆฌ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

3๏ธโƒฃ JVM ๊ณผ DVM


JAVA ์ปดํŒŒ์ผ ๊ณผ์ •์„ ์•Œ์•„๋ณด์ž

VM์ด๋“  DVM์ด๋“  ๋ชจ๋‘ Java๋ฅผ ์‚ฌ์šฉํ•˜๋Š” VM์ด๊ธฐ ๋•Œ๋ฌธ์— ๋น„์Šทํ•œ ํŠน์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์™œ JAVA๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ, JVM์ด ์•„๋‹Œ DVM์„ ์‚ฌ์šฉํ• ๊นŒ?

  1. ๋ผ์ด์„ ์Šค ๋ฌธ์ œ
  2. ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์ตœ์ ํ™” : ๋ฐฐํ„ฐ๋ฆฌ, ์ปดํ“จํŒ… ํŒŒ์›Œ, ๋ฉ”๋ชจ๋ฆฌ์˜ ์ œ์•ฝ ๋ฌธ์ œ

4๏ธโƒฃ ART ์ด๋ž€ ?


Android 4.4 (API 19)์—์„œ ์ฒ˜์Œ์œผ๋กœ ๋“ฑ์žฅ, ๋„์ž… (DVM๊ณผ ์„ ํƒ์  ์‚ฌ์šฉ)

Android 5.0 (API 21) ์ดํ›„, ๊ธฐ๋ณธ ๋Ÿฐํƒ€์ž„์œผ๋กœ ์ง€์ •

Android 7.0 ์ดํ›„๋กœ๋Š” AOT + JIT

AOT

  • ์„ค์น˜ ์‹œ์ ์— ์ด๋ฏธ ์ปดํŒŒ์ผ์„ ์™„๋ฃŒํ•˜์—ฌ ๊ธฐ๊ณ„์–ด๋กœ ํ•ด์„์„ ๋๋ƒ„
  • ์‹คํ–‰์‹œ์—๋Š” ํ•ด์„ ๊ณผ์ •์ด ์—†์ด ๊ณง๋ฐ”๋กœ ๊ธฐ๊ณ„์–ด๋กœ ์‹คํ–‰

5๏ธโƒฃ DVM vs ART


Dalvik์šฉ์œผ๋กœ ๊ฐœ๋ฐœ๋œ ์•ฑ์€ ART๋กœ ์‹คํ–‰ ์‹œ์—๋„ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Dalvik์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ธฐ์ˆ  ์ค‘ ์ผ๋ถ€๋Š” ART์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฐ ์ปดํŒŒ์ผ ๋ฐฉ์‹์˜ ํŠน์ง• ๋น„๊ตํ•ด๋ณด์ž

DVM : JIT (Just In Time)

  • ์•ฑ ์‹คํ–‰ ์‹œ ์ปดํŒŒ์ผ
  • ์„ค์น˜ ์‹œ ์ปดํŒŒ์ผ์„ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— AOT๋ณด๋‹ค ์„ค์น˜ ์†๋„ ๋น ๋ฆ„
  • ์‹คํ–‰ ์‹œ ์ปดํŒŒ์ผ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— AOT์— ๋น„ํ•ด ์‹คํ–‰ ์†๋„ ๋Š๋ฆผ
  • ์šฉ๋Ÿ‰ ์ž‘์Œ

ART : AOT (Ahead Of Time)

  • ์•ฑ ์„ค์น˜ ์‹œ ์ปดํŒŒ์ผ
  • ์„ค์น˜ ์‹œ ์ปดํŒŒ์ผ์„ ์™„๋ฃŒํ•˜๊ธฐ ๋•Œ๋ฌธ์— JIT์— ๋น„ํ•ด ์„ค์น˜ ์†๋„ ๋Š๋ฆผ
  • ์‹คํ–‰ ์‹œ ์ปดํŒŒ์ผ์„ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— JIT์— ๋น„ํ•ด ์‹คํ–‰ ์†๋„ ๋น ๋ฆ„
  • ์šฉ๋Ÿ‰ ํผ (JIT์—์„œ ์‹คํ–‰ ์‹œ ์ปดํŒŒ์ผํ•˜๋Š” ๊ฒƒ์„ ๋ฏธ๋ฆฌ ์ปดํŒŒ์ผํ•˜์—ฌ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ

6๏ธโƒฃ JVM vs DVM vs ART


JVM : ๊ฐ€์ƒ๋จธ์‹ 

DVM : ๊ฐ€์ƒ๋จธ์‹ 

ART : ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

why? ART ํ•ต์‹ฌ์ด์ž ๋™์ž‘๊ณผ์ • :: ์ปดํŒŒ์ผ, ์ธํ„ฐํ”„๋ฆฌํŒ… ๊ณผ์ •์ด ์—†๊ธฐ ๋•Œ๋ฌธ์—

  • ๊ตฌ๊ธ€ I/O 2016์˜ ๋ฐœํ‘œ์— ๋”ฐ๋ฅธ ์ถ”๊ฐ€ ์‚ฌํ•ญ

์•ˆ๋“œ๋กœ์ด๋“œ N์—์„œ๋Š” ART ์— JIT ์ปดํŒŒ์ผ๋Ÿฌ๋„ ์ถ”๊ฐ€ ๋œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœํ•„ ๊ฐ€์ด๋“œ ๋ฐฉ์‹์˜ JIT/AOT ์ปดํŒŒ์ผAndroid N์—์„œ ์ฝ”๋“œ ํ”„๋กœํŒŒ์ผ๋ง์„ ํฌํ•จํ•œ JIT(Just in Time) ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ART์— ์ถ”๊ฐ€ํ–ˆ์œผ๋ฉฐ, ์‹คํ–‰ ์‹œ์— Android ์•ฑ์˜ ์„ฑ๋Šฅ์ด ๊ณ„์†ํ•ด์„œ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค. JIT ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ART์˜ ํ˜„์žฌ AOT(Ahead of Time) ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ๋ณด์™„ํ•˜๊ณ  ๋Ÿฐํƒ€์ž„ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๋ฉฐ, ์ €์žฅ ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ณ , ์•ฑ ์—…๋ฐ์ดํŠธ ๋ฐ ์‹œ์Šคํ…œ ์—…๋ฐ์ดํŠธ ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.ํ”„๋กœํ•„ ๊ฐ€์ด๋“œ ๋ฐฉ์‹์˜ ์ปดํŒŒ์ผ์„ ํ†ตํ•ด ART๋Š” ์‹ค์ œ ์‚ฌ์šฉ๋Ÿ‰๊ณผ ๊ธฐ๊ธฐ์˜ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๊ฐ ์•ฑ์˜ AOT/JIT ์ปดํŒŒ์ผ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ART๋Š” ์ตœ์ ์˜ ์„ฑ๋Šฅ์„ ์œ„ํ•ด ๊ฐ ์•ฑ์˜ ํ•ซ ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ํ”„๋กœํ•„์„ ์œ ์ง€๊ด€๋ฆฌํ•˜๊ณ  ์ด๋“ค ๋ฉ”์„œ๋“œ๋ฅผ ํ”„๋ฆฌ์ปดํŒŒ์ผํ•˜๊ณ  ์บ์‹ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์•ฑ์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„๋“ค์€ ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋  ๋•Œ๊นŒ์ง€ ์ปดํŒŒ์ผํ•˜์ง€ ์•Š๊ณ  ๋‚จ๊ฒจ๋‘ก๋‹ˆ๋‹ค. ํ”„๋กœํ•„ ๊ฐ€์ด๋“œ ๋ฐฉ์‹์˜ ์ปดํŒŒ์ผ์€ ์•ฑ์˜ ์ฃผ์š” ๋ถ€๋ถ„๋“ค์—์„œ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ด€๋ จ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋น„๋กฏํ•œ ์•ฑ ์ „์ฒด์˜ RAM ๊ณต๊ฐ„์„ ์ค„์ด๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ์ €์šฉ๋Ÿ‰ ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๊ธฐ์— ํŠนํžˆ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.ART๋Š” ๊ธฐ๊ธฐ ๋ฐฐํ„ฐ๋ฆฌ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์ด ์ตœ์†Œํ™”๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ”„๋กœํ•„ ๊ฐ€์ด๋“œ ๋ฐฉ์‹์˜ ์ปดํŒŒ์ผ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ART๋Š” ๊ธฐ๊ธฐ๊ฐ€ ์œ ํœด ์ƒํƒœ์ด๊ณ  ์ถฉ์ „ ์ค‘์ผ ๋•Œ๋งŒ ํ”„๋ฆฌ์ปดํŒŒ์ผ์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ํ•ด๋‹น ์ž‘์—…์„ ๋ฏธ๋ฆฌ ์ˆ˜ํ–‰ํ•˜์—ฌ ์‹œ๊ฐ„๊ณผ ๋ฐฐํ„ฐ๋ฆฌ๋ฅผ ์ ˆ์•ฝํ•ฉ๋‹ˆ๋‹ค

profile
๊ฐœ๋ฐœ์„ธ๋ฆฌ์˜ ์„ฑ์žฅ๊ธฐ๐ŸŒฟ

0๊ฐœ์˜ ๋Œ“๊ธ€