Post

JIT ์ปดํŒŒ์ผ๋Ÿฌ?

img_2.png

  1. ์ž๋ฐ” ํŒŒ์ผ(.java)์„ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ํ†ตํ•ด ํด๋ž˜์Šค ํŒŒ์ผ(.class/๋ฐ”์ดํŠธ์ฝ”๋“œ)๋กœ ๋งŒ๋“ ๋‹ค.
  2. ์ดํ›„ ์ž๋ฐ” ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ JVM์ด ์ฝ๊ณ  ์‹คํ–‰ํ•œ๋‹ค.

์ž๋ฐ” ๋ฐ”์ดํŠธ ์ฝ”๋“œ

JVM์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด๋กœ ๋ณ€ํ™”๋‚˜๋œ ์ž๋ฐ” ์†Œ์Šค ์ฝ”๋“œ ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ๋ณ€ํ™˜๋˜๋Š” ์ฝ”๋“œ์˜ ๋ช…๋ น์–ด ํฌ๊ธฐ๊ฐ€ 1 ๋ฐ”์ดํŠธ์—ฌ์„œ ์ž๋ฐ” ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ผ ํ•œ๋‹ค. ์ž๋ฐ” ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋Š” ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ ๋งŒ ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉด, ์–ด๋–ค ์šด์˜์ฒด์ œ์—์„œ๋„ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ค.




์ปดํŒŒ์ผ๋Ÿฌ์™€ ์ธํ„ฐํ”„๋ฆฌํ„ฐ

์ปดํŒŒ์ผ๋Ÿฌ์™€ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ชจ๋‘ ๊ณ ์ˆ˜์ค€ ์–ธ์–ด๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜์‹œํ‚จ๋‹ค.

์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์†Œ์Šค์ฝ”๋“œ ์ „์ฒด๋ฅผ ํ•œ ๋ฒˆ์— ๋ฒˆ์—ญํ•˜์—ฌ ๋ชฉ์  ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
์ธํ„ฐํ”„๋ฆฌํ„ฐ๋Š” ์†Œ์Šค์ฝ”๋“œ๋ฅผ ํ•œ ํ–‰์”ฉ ์ค‘๊ฐ„ ์ฝ”๋“œ๋กœ ๋ฒˆ์—ญ ํ›„ ์‹คํ–‰ํ•œ๋‹ค.

์ปดํŒŒ์ผ๋Ÿฌ

  • ์ปดํŒŒ์ผ์ด ์™„๋ฃŒ๋œ ์‹คํ–‰ ํŒŒ์ผ์€ ์ปดํ“จํ„ฐ์—์„œ ๋น ๋ฅด๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด ํšจ์œจ์ ์ด๋‹ค.
  • ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๊ฐ€ ์œ ์ถœ๋˜์ง€์•Š๋Š”๋‹ค.
  • ์ปดํŒŒ์ผ ์—๋Ÿฌ์™€ ๊ด€๋ จ๋œ ์—๋Ÿฌ๋ฅผ ์ดˆ๊ธฐ์— ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ฝ”๋“œ ์ˆ˜์ •์‹œ ๋‹ค์‹œ ์ปดํŒŒ์ผ ํ•ด์•ผ ํ•œ๋‹ค.
  • ์ปดํŒŒ์ผ ์‹œ๊ฐ„์ด ๋น„๊ต์  ๋Š๋ฆฌ๋ฉฐ, ์ˆ˜์ •์ด ๋นˆ๋ฒˆํ•œ ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

์ธํ„ฐํ”„๋ฆฌํ„ฐ

  • ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์‹œ์Šคํ…œ ๊ฐ„ ์ด์‹์„ฑ์ด ์ข‹๋‹ค.
  • ์ „์ฒด ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์ปดํŒŒ์ผํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ ์ˆ˜์ •์— ์šฉ์ดํ•œ๋‹ค.
  • ๋งค๋ฒˆ ๋ฒˆ์—ญ ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰ ์†๋„๊ฐ€ ๋Š๋ ค ์ปดํŒŒ์ผ๋Ÿฌ์— ๋น„ํ•ด ๋Š๋ฆฌ๋‹ค.
  • ์ค‘๊ฐ„ ์ฝ”๋“œ๋กœ ํ•ด์„๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋žจ์˜ ์ฝ”๋“œ๊ฐ€ ์œ ์ถœ๋  ์ˆ˜ ์žˆ๋‹ค.




์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ณผ์ •

  1. ์ž๋ฐ” ํŒŒ์ผ์„ ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ํ†ตํ•ด ๋ฐ”์ดํŠธ์ฝ”๋“œ ํŒŒ์ผ๋กœ ์ปดํŒŒ์ผ ํ•œ๋‹ค. ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ž๋ฐ” ์†Œ์Šค์ฝ”๋“œ๋ฅผ JVM์„ ์œ„ํ•œ ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญํ•œ๋‹ค.

  2. JVM์˜ ์‹คํ–‰ ์—”์ง„ ๋‚ด์— ์žˆ๋Š” ์ž๋ฐ” ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ํ†ตํ•ด ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ํŠน์ • ํ™˜๊ฒฝ์˜ ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญํ•˜๊ณ  ์‹คํ–‰ํ•œ๋‹ค.




์ž๋ฐ”๋Š” ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ”์ดํŠธ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผํ•˜๋Š” ๊ณผ์ •๊ณผ, ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ์ธํ„ฐํ”„๋ฆฌํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค. ์ฆ‰, ์ปดํŒŒ์ผ ๊ณผ์ •๋งŒ ํ•„์š”ํ•œ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ณด๋‹ค ๋Š๋ฆฌ๋‹ค.

๊ฑฐ๊ธฐ์— ๋”ํ•˜์—ฌ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๋ณด๋‹ค ์†๋„๊ฐ€ ๋Š๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง„๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์˜จ ๊ฒƒ์ด JIT ์ปดํŒŒ์ผ๋Ÿฌ์ด๋‹ค.

JIT ์ปดํŒŒ์ผ์€ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ณผ์ •์— ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ผ์–ด๋‚˜๋ฉฐ(๊ทธ๋ž˜์„œ Just-In-Time์ด๋‹ค), ์ „์ฒด ์ฝ”๋“œ์˜ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋ณ€ํ™˜ํ•œ๋‹ค. ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜๋œ ์ฝ”๋“œ๋Š” ์บ์‹œ์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์žฌ์‚ฌ์šฉ ์‹œ ์ปดํŒŒ์ผ์„ ๋‹ค์‹œ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.




Just-In-Time ์ปดํŒŒ์ผ๋Ÿฌ

Java์™€ ๊ฐ™์€ JVM ๊ธฐ๋ฐ˜ ์–ธ์–ด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๋กœ, ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ปดํŒŒ์ผ ๊ธฐ๋ฒ•

๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜๋œ ์ฝ”๋“œ๋ฅผ ์บ์‹œ์— ์ €์žฅํ•œ ํ›„ ์žฌ์‚ฌ์šฉ์‹œ ์ปดํŒŒ์ผ์„ ๋‹ค์‹œ ํ•˜์ง€ ์•Š์•„๋„ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์ด ์ข‹๋‹ค.

ํ•˜์ง€๋งŒ ๋ชจ๋“  ์ฝ”๋“œ๋“ค์„ ์บ์‹œํ•˜๋Š”๊ฑด ์•„๋‹ˆ๋‹ค. JVM์€ ๋‚ด๋ถ€์—์„œ ์ž์ฃผ ์ˆ˜ํ–‰๋˜๋Š” ์ฝ”๋“œ๋“ค์„ ์„ ๋ณ„ํ•˜์—ฌ ์บ์‹œ ๊ณต๊ฐ„์— ๋„ฃ์–ด ๋‘”๋‹ค.



์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ์„ ๋ณ„ํ• ๊นŒ?

1. ํ”„๋กœํŒŒ์ผ๋ง

JVM์€ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘ ๋ฉ”์„ฏ๋“œ์˜ ํ˜ธ์ถœ ๋นˆ๋„, ์‹คํ–‰ ์‹œ๊ฐ„์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•œ๋‹ค.
์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ JVM์€ ์–ด๋–ค ๋ฉ”์„œ๋“œ๊ฐ€ ํ•ซ์ŠคํŒŸ ๋ฉ”์„œ๋“œ์ธ์ง€ ํŒ๋‹จํ•œ๋‹ค.

2. ์ž„๊ณ„๊ฐ’ ์„ค์ •

JVM์€ ํŠน์ • ์ž„๊ณ„๊ฐ’์„ ์„ค์ •ํ•˜๊ณ , ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ๋นˆ๋„๊ฐ€ ์ž„๊ณ„๊ฐ’์„ ๋„˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ JIT ์ปดํŒŒ์ผ ๋Œ€์ƒ์œผ๋กœ ์„ ์ •ํ•œ๋‹ค.
์ž„๊ณ„๊ฐ’์€ JVM์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค.

3. JIT ์ปดํŒŒ์ผ

ํ”„๋กœํŒŒ์ผ๋ง ๋ฐ์ดํ„ฐ์™€ ์ž„๊ณ„๊ฐ’์„ ๋ฐ”ํƒ•์œผ๋กœ, JVM์€ ํ•ซ์ŠคํŒŸ ๋ฉ”์„œ๋“œ๋ฅผ JIT ์ปดํŒŒ์ผ ํ•˜์—ฌ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. JIT ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ด ๋ฉ”์„œ๋“œ๋ฅผ ์ตœ์ ํ™”ํ•˜์—ฌ ๋‹ค์Œ ์‹คํ–‰ ์‹œ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

4. ์บ์‹ฑ

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

5. ์Šค์ผ€์ค„๋ง

JIT ์ปดํŒŒ์ผ์€ CPU ์ž์›๊ณผ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ๊ณ ๋ คํ•˜์—ฌ ์‹คํ–‰๋œ๋‹ค.

๋ฉ”์„œ๋“œ ํ˜ธ์ถœ๋นˆ๋„๊ฐ€ ๋†’์€ ๊ฒฝ์šฐ JIT ์ปดํŒŒ์ผ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋†’์—ฌ, ๋งŽ์ด ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ์ผ์ˆ˜๋ก ์‚˜๋ฆฌ ์ตœ์ ํ™”ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.
ํ•˜์ง€๋งŒ CPU ์‚ฌ์šฉ๋Ÿ‰์ด ๋†’๋‹ค๋ฉด, JIT ์ปดํŒŒ์ผ์„ ๋Šฆ์ถ”๊ฑฐ๋‚˜ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CPU ๋ถ€ํ•˜๊ฐ€ ๋‚ฎ์€ ์‹œ์ ์— ์ปดํŒŒ์ผ ์ž‘์—…์ด ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋ฉฐ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ „์ฒด ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.

6. ์ •์ฑ… ์กฐ์ •

JVM์€ ๋‹ค์–‘ํ•œ ์ •์ฑ…์„ ํ†ตํ•ด ํ•ซ์ŠคํŒŸ ๋ฉ”์„œ๋“œ๋ฅผ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. ํŠน์ • ๋ฉ”์„œ๋“œ์˜ ํ˜ธ์ถœ ๋นˆ๋„๊ฐ€ ๊ธ‰์ฆํ•˜๋ฉด JVM์€ ํ•ด๋‹น ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด ์ถ”๊ฐ€ ์ตœ์ ํ™”๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.


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




C1, C2

์‹ค์ œ๋กœ JVM์˜ JIT ์ปดํŒŒ์ผ๋Ÿฌ ๋‚ด๋ถ€์—๋Š” 2๊ฐ€์ง€ ์ปดํŒŒ์ผ๋Ÿฌ์ธ C1์ปดํŒŒ์ผ๋Ÿฌ์™€ C2์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์žˆ๋‹ค. C1์€ level1~3, C2๋Š” level4๋ฅผ ๋‹ด๋‹นํ•œ๋‹ค.

C1 - Client Compiler

๋น ๋ฅธ ์‹œ์ž‘ ์‹œ๊ฐ„์„ ๋ชฉํ‘œ๋กœ ์„ค๊ณ„๋œ Client ๋ชจ๋“œ์—์„œ ๋™์ž‘ํ•˜๋Š” JIT ์ปดํŒŒ์ผ๋Ÿฌ์ด๋‹ค.
๊ฐ„๋‹จํ•œ ์ตœ์ ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ๋ณต์žกํ•œ ์ตœ์ ํ™”๋Š” ์ ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ ์ปดํŒŒ์ผ์— ์‹œ๊ฐ„์ด ์ ๊ฒŒ ๊ฑธ๋ฆฐ๋‹ค. ์„œ๋ฒ„ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๋ณด๋‹ค๋Š” ๋ฐ์Šคํฌํƒ‘ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜, GUI ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๊ฐ™์€ ์งง์€ ์‹คํ–‰ ์‹œ๊ฐ„๊ณผ ๋น ๋ฅธ ์‘๋‹ต์†๋„๊ฐ€ ์ค‘์š”ํ•œ ํ”„๋กœ๊ทธ๋žจ์— ์ ํ•ฉํ•˜๋‹ค.

  • ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ๋•Œ ๋น ๋ฅด๊ฒŒ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ”๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ธ๋ผ์ธ, dead code elimination, ๋ฃจํ”„ ์ตœ์ ํ™”๋“ฑ ๊ธฐ๋ณธ ์ตœ์ ํ™” ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • ์ตœ์ ํ™”๋ฅผ ๊ฐ„๋‹จํžˆ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋žจ์ด ๋น ๋ฅด๊ฒŒ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

C2 - Server Compiler

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

  • ๋ณต์žกํ•œ ๋ฃจํ”„ ์ „ํ™˜, ์ธ๋ผ์ธ ํ™•์ •, ํƒˆ์ถœ ๋ถ„์„ ๋“ฑ ๊ณ ๊ธ‰ ์ตœ์ ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•œ๋‹ค.
  • ๊ณ ๊ธ‰ ์ตœ์ ํ™”๋ฅผ ์ ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ ์‹œ๊ฐ„์ด ์ƒ๋Œ€์ ์œผ๋กœ ๊ธธ๋ฉฐ, ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ ์‹œ์ ์—์„œ๋Š” ๋” ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค.
  • ์ตœ์ ํ™”๋œ ์ฝ”๋“œ๋กœ ์ธํ•ด CPU, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์„ ์ค„์ธ๋‹ค.



Tiered Compilation (๊ณ„์ธต์  ์ปดํŒŒ์ผ)

C1, C2 ์ปดํŒŒ์ผ๋Ÿฌ์˜ ์žฅ์ ์„ ๊ฒฐํ•ฉํ•œ JVM ์ปดํŒŒ์ผ ์ „๋žต์ด๋‹ค.
C1 ์ปดํŒŒ์ผ๋Ÿฌ๋กœ ๋น ๋ฅด๊ฒŒ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์‹คํ–‰ํ•˜๊ณ , ํ”„๋กœ๊ทธ๋žจ์ด ๋” ์˜ค๋ž˜ ์‹คํ–‰๋˜๋ฉด, C2 ์ปดํŒŒ์ผ๋Ÿฌ๋กœ ๊ณ ๊ธ‰ ์ตœ์ ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.




ํŠน์ง•

1. ์„ฑ๋Šฅ ์ตœ์ ํ™”

๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋Œ€์‹ , ์ž์ฃผ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ๋ฅผ JIT ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ง์ ‘ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด ๋” ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‹คํ–‰ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋œ๋‹ค.

2. ๋™์  ์ตœ์ ํ™”

JIT ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์‹คํ–‰ ์ค‘์— ์ฝ”๋“œ์˜ ์‚ฌ์šฉ ํŒจํ„ด์„ ๋ถ„์„ํ•˜์—ฌ ์ตœ์ ํšŒ๋œ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

3. ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ

ํ•„์š”ํ•  ๋•Œ๋งŒ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

4. ํ˜ธํ™˜์„ฑ ์œ ์ง€

๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” AOT(Ahead-of-Time) ์ปดํŒŒ์ผ๋Ÿฌ์™€ ๋‹ฌ๋ฆฌ, JIT๋Š” ๋ฐ”์ดํŠธ ์ฝ”๋“œ ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋‹ค๊ฐ€ ์‹คํ–‰ ์‹œ์ ์— ํ•„์š”ํ•œ ๋ถ€๋ถ„์„ ๋ณ€ํ™˜ํ•œ๋‹ค.
์ด๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์—์„œ ๋™์ผํ•œ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” JVM์˜ ์ด์‹์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

AOT ์ปดํŒŒ์ผ

ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „ ๋ฏธ๋ฆฌ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ์‹
์‹คํ–‰ ์‹œ์ ์— ์ถ”๊ฐ€์ ์ธ ์ปดํŒŒ์ผ ์ž‘์—…์ด ํ•„์š”ํ•˜์ง€ ์•Š์•„ ์‹คํ–‰ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.
AOT๋กœ ์ƒ์„ฑ๋œ ๊ธฐ๊ณ„์–ด๋Š” ํŠน์ • ํ”Œ๋žซํผ์—์„œ๋งŒ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
ํ”Œ๋žซํผ์— ์ข…์†์ ์ด๋ฉฐ, ๋‹ค๋ฅธ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•˜๋ ค๋ฉด ๋ณ„๋„๋กœ AOT ์ปดํŒŒ์ผ ํ•ด์•ผ ํ•œ๋‹ค.




JIT์˜ ์ž‘๋™ ๋ฐฉ์‹

  1. ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ฉด JVM์€ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ํ†ตํ•ด ํ•œ ์ค„์”ฉ ํ•ด์„ํ•˜๋ฉฐ ์‹คํ–‰ํ•œ๋‹ค.
  2. ์‹คํ–‰ ์ค‘, ํŠน์ • ๋ฉ”์„œ๋“œ๋‚˜ ์ฝ”๋“œ ๋ธ”๋ก์ด ์ž์ฃผ ํ˜ธ์ถœ๋˜๋ฉด JIT ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ•ด๋‹น ๋ถ€๋ถ„์„ ๊ฐ์ง€ํ•œ๋‹ค.
  3. ๊ทธ ์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ์บ์‹ฑํ•˜์—ฌ, ์ดํ›„๋ถ€ํ„ฐ๋Š” ๋ณ€ํ™˜๋œ ๊ธฐ๊ณ„์–ด๋ฅผ ์‚ฌ์šฉํ•ด ๋” ๋น ๋ฅด ์‹คํ–‰ํ•œ๋‹ค.
This post is licensed under CC BY 4.0 by the author.