2023๋…„ 7์›” 31์ผยท4๋ถ„ ์ฝ๊ธฐ

์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ (JVM) ์•„ํ‚คํ…์ฒ˜ ์ดํ•ด

JVM(Java Virtual Machine) ์•„ํ‚คํ…์ฒ˜๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ  ํ•ด๋‹น ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ดํ•ดํ•˜๋ฉฐ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํšจ์œจ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.

์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ (JVM) ์•„ํ‚คํ…์ฒ˜ ์ดํ•ด

JVM(Java Virtual Machine)์€ Java ๋ฐ”์ดํŠธ์ฝ”๋“œ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์„ ๋‹ด๋‹นํ•˜๋Š” Java ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์˜ ์ค‘์š”ํ•œ ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค. JVM์˜ ์ฃผ์š” ์ด์ ์ธ ๋‹ค์–‘ํ•œ ํ•˜๋“œ์›จ์–ด ์•„ํ‚คํ…์ฒ˜ ๋ฐ ์šด์˜ ์ฒด์ œ์—์„œ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์›ํ™œํ•˜๊ฒŒ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ์ผ๊ด€๋œ ํ”Œ๋žซํผ ๋…๋ฆฝ์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ผ๋ฐ˜์ ์œผ๋กœ Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋˜๊ณ  ๋ฐ”์ดํŠธ์ฝ”๋“œ ํ˜•์‹(*.class ํŒŒ์ผ)์œผ๋กœ ์ปดํŒŒ์ผ๋œ ๋‹ค์Œ JVM์—์„œ ๋กœ๋“œ ๋ฐ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. JVM์€ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ณธ ์šด์˜ ์ฒด์ œ ๋ฐ ํ•˜๋“œ์›จ์–ด์— ๊ณ ์œ ํ•œ ๊ธฐ๋ณธ ๊ธฐ๊ณ„ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜๋ฏ€๋กœ Java ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์ˆ˜์ • ์—†์ด ์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค๋Š” ์ข…์ข… "Write Once, Run Anywhere" ์›์น™์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

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

JVM ๊ตฌ์„ฑ ์š”์†Œ ๋ฐ ํ•ด๋‹น ๊ธฐ๋Šฅ

JVM ์•„ํ‚คํ…์ฒ˜๋Š” ํ•จ๊ป˜ ์ž‘๋™ํ•˜์—ฌ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ˆ˜๋ช… ์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ตฌ์„ฑ ์š”์†Œ์—๋Š” ๋‹ค์Œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  1. Classloader: Classloader๋Š” ๋””์Šคํฌ์—์„œ JVM ๋ฉ”๋ชจ๋ฆฌ๋กœ Java ํด๋ž˜์Šค๋ฅผ ๋กœ๋“œํ•˜๊ณ , ํด๋ž˜์Šค ์ข…์†์„ฑ์„ ํ•ด๊ฒฐํ•˜๊ณ , ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ํด๋ž˜์Šค๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. Classloader๋Š” Bootstrap Classloader์—์„œ ์‹œ์ž‘ํ•˜์—ฌ Extension Classloader ๋ฐ Application Classloader๊ฐ€ ์ด์–ด์ง€๋Š” ์œ„์ž„ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.
  2. ๋Ÿฐํƒ€์ž„ ๋ฐ์ดํ„ฐ ์˜์—ญ: JVM์€ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์— ๋Ÿฐํƒ€์ž„ ๋ฐ์ดํ„ฐ ์˜์—ญ์ด๋ผ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์—๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์ˆ˜๋ช… ์ฃผ๊ธฐ์˜ ๋‹ค์–‘ํ•œ ์ธก๋ฉด์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ํž™, ์Šคํƒ, ๋ฉ”์„œ๋“œ ์˜์—ญ, ์ƒ์ˆ˜ ํ’€ ๋ฐ PC ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
  3. ์‹คํ–‰ ์—”์ง„: ์‹คํ–‰ ์—”์ง„์€ Java ๋ฐ”์ดํŠธ์ฝ”๋“œ ์‹คํ–‰์„ ๋‹ด๋‹นํ•˜๋Š” ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ์‹คํ–‰ ์—”์ง„์€ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•˜๊ณ  ๋Ÿฐํƒ€์ž„ ์ค‘์— ๋„ค์ดํ‹ฐ๋ธŒ ๋จธ์‹  ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ, JIT(Just-In-Time) ์ปดํŒŒ์ผ๋Ÿฌ ๋ฐ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ์™€ ๊ฐ™์€ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์„น์…˜์—์„œ๋Š” JVM ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ๊ณผ JVM ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

JVM ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ

ํšจ๊ณผ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋Š” Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํšจ์œจ์ ์ธ ์‹คํ–‰์— ๊ธฐ์—ฌํ•˜๋Š” JVM ์•„ํ‚คํ…์ฒ˜์˜ ํ•„์ˆ˜ ์š”์†Œ์ž…๋‹ˆ๋‹ค. JVM์€ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘ ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ์กฐ์ž‘์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋Ÿฐํƒ€์ž„ ๋ฐ์ดํ„ฐ ์˜์—ญ์ด๋ผ๋Š” ๋‹ค์–‘ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. JVM์˜ ์ฃผ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ํž™: ํž™์€ JVM์—์„œ ๊ฐ€์žฅ ํฐ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด๋ฉฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ชจ๋“  ์Šค๋ ˆ๋“œ ๊ฐ„์— ๊ณต์œ ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์— ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šคํ™”๋œ ๊ฐœ์ฒด ๋ฐ ๋ฐฐ์—ด์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ํž™์€ '์ Š์€ ์„ธ๋Œ€'์™€ '๊ตฌ์„ธ๋Œ€' ์˜์—ญ์œผ๋กœ ๋” ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. Young Generation ์˜์—ญ์€ ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ˜๋ฉด Old Generation ์˜์—ญ์€ ์—ฌ๋Ÿฌ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘ ์ฃผ๊ธฐ์—์„œ ์‚ด์•„๋‚จ์€ ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
  2. ์Šคํƒ: JVM์€ ๊ฐ ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ์Šคํƒ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์Šคํƒ์€ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ์ •๋ณด, ์ง€์—ญ ๋ณ€์ˆ˜ ๋ฐ ์ค‘๊ฐ„ ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์Šคํƒ์˜ ๊ฐ ํ•ญ๋ชฉ์„ ์Šคํƒ ํ”„๋ ˆ์ž„์ด๋ผ๊ณ  ํ•˜๋ฉฐ JVM์€ ๊ฐ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์— ๋Œ€ํ•ด ๋…๋ฆฝ์ ์œผ๋กœ ์Šคํƒ ํ”„๋ ˆ์ž„์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ฉ”์„œ๋“œ ์˜์—ญ: ๋ฉ”์„œ๋“œ ์˜์—ญ์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ชจ๋“  ์Šค๋ ˆ๋“œ ๊ฐ„์— ๊ณต์œ ๋˜๋ฉฐ ๋ฉ”์„œ๋“œ ์ด๋ฆ„, ๋ณ€์ˆ˜ ์ด๋ฆ„ ๋ฐ ์ƒ์ˆ˜ ๊ฐ’๊ณผ ๊ฐ™์€ ํด๋ž˜์Šค ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ ์˜์—ญ์—๋Š” ๋ฐ”์ดํŠธ ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ƒ์ˆ˜ ๊ฐ’๊ณผ ๊ธฐํ˜ธ ์ฐธ์กฐ๋ฅผ ๋ณด์œ ํ•˜๋Š” ์ƒ์ˆ˜ ํ’€๋„ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  4. PC ๋ ˆ์ง€์Šคํ„ฐ: PC(ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ) ๋ ˆ์ง€์Šคํ„ฐ๋Š” ๊ฐ ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•ด ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ JVM ๋ช…๋ น์˜ ์ฃผ์†Œ๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ž…๋‹ˆ๋‹ค. PC ๋ ˆ์ง€์Šคํ„ฐ๋Š” JVM์ด ๋‹ค์Œ์— ์‹คํ–‰ํ•  ๋ช…๋ น์„ ์ถ”์ ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ์™ธ์—๋„ JVM์€ ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฐ์ฒด์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์ž๋™์œผ๋กœ ํ•ด์ œํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ์ค„์ด๊ณ  ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ์„ ์ตœ์ ํ™”ํ•˜๋Š” ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

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

JVM ํด๋ž˜์Šค๋กœ๋”

Classloader๋Š” Java ํด๋ž˜์Šค๋ฅผ JVM ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•˜๋Š” JVM(Java Virtual Machine)์˜ ์ค‘์š”ํ•œ ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ๋กœ๋“œ, ์—ฐ๊ฒฐ ๋ฐ ์ดˆ๊ธฐํ™”์˜ ์„ธ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ํ™œ๋™์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ™œ๋™์„ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋กœ๋“œ ์ค‘

๋กœ๋“œ๋Š” ๋””์Šคํฌ์—์„œ ํด๋ž˜์Šค ํŒŒ์ผ์„ ๊ฐ€์ ธ์™€์„œ JVM ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค. Classloader๋Š” ํŒจํ‚ค์ง€ ์ด๋ฆ„๊ณผ ํด๋ž˜์Šค ์ด๋ฆ„์„ ํฌํ•จํ•˜๋Š” ์ •๊ทœํ™”๋œ ํด๋ž˜์Šค ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•„์š”ํ•œ ํด๋ž˜์Šค ํŒŒ์ผ์„ ์ฐพ์Šต๋‹ˆ๋‹ค. JVM์—๋Š” ์„ธ ๊ฐ€์ง€ ์œ ํ˜•์˜ ํด๋ž˜์Šค ๋กœ๋”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. Bootstrap Classloader: ์ด๊ฒƒ์€ JVM์˜ ๋‚ด์žฅ Classloader์ด๋ฉฐ rt.jar ํŒŒ์ผ์—์„œ java.lang.Object ๋ฐ ๊ธฐํƒ€ ๋Ÿฐํƒ€์ž„ ํด๋ž˜์Šค์™€ ๊ฐ™์€ ํ•ต์‹ฌ Java ํด๋ž˜์Šค๋ฅผ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
  2. Extension Classloader: ์ด Classloader๋Š” ์ถ”๊ฐ€ Java ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ํฌํ•จ๋œ JDK์˜ ext ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ํด๋ž˜์Šค๋ฅผ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
  3. ์‹œ์Šคํ…œ/์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํด๋ž˜์Šค ๋กœ๋”: ๊ธฐ๋ณธ ํด๋ž˜์Šค ๋กœ๋”๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํด๋ž˜์Šค ๊ฒฝ๋กœ์—์„œ ํด๋ž˜์Šค๋ฅผ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ํด๋ž˜์Šค ๊ฒฝ๋กœ๋Š” Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ๋•Œ -cp ๋˜๋Š” -classpath ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Classloader๋Š” Bootstrap Classloader์—์„œ ์‹œ์ž‘ํ•˜์—ฌ Extension ๋ฐ System/Application Classloader๋กœ ๋‚ด๋ ค๊ฐ€๋Š” ์œ„์ž„ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ์ถœ์ฒ˜: ์ž๋ฐ” ํŠœํ† ๋ฆฌ์–ผ ๋„คํŠธ์›Œํฌ

์—ฐ๊ฒฐ

์—ฐ๊ฒฐ ํ”„๋กœ์„ธ์Šค๋Š” ํด๋ž˜์Šค ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๊ณ  ๋ถˆ์ผ์น˜ ๋˜๋Š” ์˜ค๋ฅ˜๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ์€ ์„ธ ๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

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

์ดˆ๊ธฐํ™”

์ดˆ๊ธฐํ™”๋Š” Classloader ํ”„๋กœ์„ธ์Šค์˜ ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ JVM์€ ํด๋ž˜์Šค์˜ ๋ชจ๋“  ์ •์  ์ฝ”๋“œ ๋ธ”๋ก์„ ์‹คํ–‰ํ•˜๊ณ  ํด๋ž˜์Šค ํŒŒ์ผ์— ์ง€์ •๋œ ์ดˆ๊ธฐ ๊ฐ’์„ ์ •์  ํ•„๋“œ์— ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ๋„ ์ •์  ์ดˆ๊ธฐํ™”๊ฐ€ ํ•œ ๋ฒˆ๋งŒ ๋ฐœ์ƒํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

JIT ์ปดํŒŒ์ผ๋Ÿฌ ๋ฐ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ

JIT(Just-In-Time) ์ปดํŒŒ์ผ๋Ÿฌ ๋ฐ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ์ตœ์ ํ™”ํ•˜๊ณ  ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํ•„์ˆ˜ JVM ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค.

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

JIT(Just-In-Time) ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋Ÿฐํƒ€์ž„์— Java ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ณธ ๊ธฐ๊ณ„ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค๋Š” Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‹คํ–‰ ์†๋„๋ฅผ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค. JIT ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ž์ฃผ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜๊ณ , ์ปดํŒŒ์ผ๋œ ์ฝ”๋“œ๋ฅผ ์บ์‹œํ•˜๊ณ , ํ–ฅํ›„ ์‹คํ–‰์—์„œ ์žฌ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•˜๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค.

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

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ

GC(๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ)๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ž๋™ํ™”๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ํ•„์ˆ˜ JVM ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ๋” ์ด์ƒ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ฐธ์กฐํ•˜์ง€ ์•Š๋Š” ๊ฐœ์ฒด์—์„œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค๋Š” Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ณ  ๋ฆฌ์†Œ์Šค ํ™œ์šฉ์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค. JVM์€ ์„ธ๋Œ€๋ณ„ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘ ์ „๋žต์„ ์‚ฌ์šฉํ•˜์—ฌ ํž™ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ Young ๋ฐ Old Generation์œผ๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค. Young Generation์€ ๋‹ค์‹œ Eden Space, Survivor Space 0(S0), Survivor Space 1(S1)์œผ๋กœ ์„ธ๋ถ„ํ™”๋ฉ๋‹ˆ๋‹ค.

์„ธ๋Œ€๋ณ„ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘์˜ ๊ธฐ๋ณธ ์•„์ด๋””์–ด๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ฐ์ฒด๊ฐ€ ์ˆ˜๋ช…์ด ์งง๊ณ  ์ƒ์„ฑ ์งํ›„ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Young Generation์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž์ฃผ ํ• ๋‹น ๋ฐ ํ• ๋‹น ํ•ด์ œํ•˜๋ฉด ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ตœ์ ํ™”๋ฉ๋‹ˆ๋‹ค. Garbage Collector๋Š” Mark-Sweep-Compact, Copying ๋ฐ Generational Collection๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํž™ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฐœ์ฒด๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

JVM ๋Ÿฐํƒ€์ž„ ๋ฐ์ดํ„ฐ ์˜์—ญ

์‹ค์ œ ์†Œ์Šค ์ฝ”๋“œ ๋‚ด๋ณด๋‚ด๊ธฐ
๊ฒ€ํ† ํ•˜๊ณ  ์–ด๋””์„œ๋‚˜ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒ์„ฑ๋œ ์†Œ์Šค ์ฝ”๋“œ๋กœ ์ œ์–ด๊ถŒ์„ ์œ ์ง€ํ•˜์„ธ์š”.
์ฝ”๋“œ ๋‚ด๋ณด๋‚ด๊ธฐ

JVM ๋Ÿฐํƒ€์ž„ ๋ฐ์ดํ„ฐ ์˜์—ญ์€ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด JVM์—์„œ ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ ์˜์—ญ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  Java ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ํšจ์œจ์ ์ธ ์‹คํ–‰์„ ์ด‰์ง„ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. JVM์˜ ์ฃผ์š” ๋Ÿฐํƒ€์ž„ ๋ฐ์ดํ„ฐ ์˜์—ญ์—๋Š” ํž™, ์Šคํƒ, ๋ฉ”์„œ๋“œ ์˜์—ญ, ์ƒ์ˆ˜ ํ’€ ๋ฐ PC ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋”๋ฏธ

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

์Šคํƒ

์Šคํƒ์€ ์ง€์—ญ ๋ณ€์ˆ˜์™€ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ž…๋‹ˆ๋‹ค. JVM์˜ ๊ฐ ์“ฐ๋ ˆ๋“œ๋Š” ์ž์‹ ๋งŒ์˜ ์Šคํƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ์Šคํƒ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋Š” ํ•ด๋‹น ์“ฐ๋ ˆ๋“œ์˜ ๋ฒ”์œ„ ๋‚ด์—์„œ๋งŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค์— ์Šค๋ ˆ๋“œ ๋™๊ธฐํ™”๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์Šคํƒ์€ ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ๊ฒ€์ƒ‰์„ ์œ„ํ•œ LIFO(ํ›„์ž…์„ ์ถœ) ๋ฐฉ๋ฒ•์„ ์šฉ์ดํ•˜๊ฒŒ ํ•˜์—ฌ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ์‹คํ–‰์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋ฐฉ๋ฒ• ์˜์—ญ

๋ฉ”์„œ๋“œ ์˜์—ญ์€ ๋กœ๋“œ๋œ ๊ฐ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ, ์ƒ์ˆ˜ ํ’€ ์ •๋ณด ๋ฐ ์ •์  ํ•„๋“œ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค. ์ด ์˜์—ญ์€ ํด๋ž˜์Šค ๊ด€๋ จ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ๋™์  ์—ฐ๊ฒฐ ๋ฐ ๋ฐ”์ดํŠธ ์ฝ”๋“œ ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ƒ์ˆ˜ ํ’€

์ƒ์ˆ˜ ํ’€์€ Java ๋ฐ”์ดํŠธ ์ฝ”๋“œ์—์„œ ์ฐธ์กฐํ•˜๋Š” ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด, ํด๋ž˜์Šค ์ด๋ฆ„ ๋ฐ ๋ฉ”์„œ๋“œ ์ด๋ฆ„๊ณผ ๊ฐ™์€ ์ƒ์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฉ”์„œ๋“œ ์˜์—ญ์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์ƒ์ˆ˜ ๊ฐ’์— ๋Œ€ํ•œ ์ค‘์•™ ์ €์žฅ์†Œ ์—ญํ• ์„ ํ•˜๋ฉฐ ์—ฐ๊ฒฐ โ€‹โ€‹ํ”„๋กœ์„ธ์Šค ์ค‘์— ๊ธฐํ˜ธ ์ฐธ์กฐ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

PC ๋ ˆ์ง€์Šคํ„ฐ

ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ(PC) ๋ ˆ์ง€์Šคํ„ฐ๋Š” ๊ฐ ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•ด ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ Java ๋ฐ”์ดํŠธ์ฝ”๋“œ ๋ช…๋ น์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ž…๋‹ˆ๋‹ค. PC ๋ ˆ์ง€์Šคํ„ฐ๋Š” ์Šค๋ ˆ๋“œ ์‹คํ–‰์„ ๊ด€๋ฆฌํ•˜๊ณ  JVM์—์„œ ๋ช…๋ น ์‹คํ–‰ ์‹œํ€€์Šค๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์‹คํ–‰ํ•  ๋‹ค์Œ ๋ฐ”์ดํŠธ์ฝ”๋“œ ๋ช…๋ น์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ JVM์ด Java ๋ฐ”์ดํŠธ์ฝ”๋“œ ๋ช…๋ น์„ ์ฒ˜๋ฆฌํ•จ์— ๋”ฐ๋ผ ํ•ด๋‹น ๊ฐ’์ด ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.

JVM ์•„ํ‚คํ…์ฒ˜์˜ ์ด์  ๋ฐ ์ œํ•œ ์‚ฌํ•ญ

JVM ๋Œ€์‘ ๊ด€๋ฆฌ์ž ๋„๊ตฌ ๋งŒ๋“ค๊ธฐ
์„œ๋น„์Šค, ์ž‘์—…, ์„ฑ๋Šฅ ์ง€ํ‘œ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๋‚ด๋ถ€ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๋งŒ๋“œ์„ธ์š”.
๋„๊ตฌ ๋งŒ๋“ค๊ธฐ

JVM(Java Virtual Machine) ์•„ํ‚คํ…์ฒ˜๋Š” ๋‹ค์–‘ํ•œ ์ด์ ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋„๋ฆฌ ์„ ํƒ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•œ๊ณ„๊ฐ€ ์—†๋Š” ์‹œ์Šคํ…œ์€ ์—†์Šต๋‹ˆ๋‹ค. ์ด ์„น์…˜์—์„œ๋Š” JVM ์•„ํ‚คํ…์ฒ˜์˜ ์ด์ ๊ณผ ๋‹จ์ ์— ๋Œ€ํ•œ ๊ฐœ์š”๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

JVM ์•„ํ‚คํ…์ฒ˜์˜ ์ด์ 

  1. ํ”Œ๋žซํผ ๋…๋ฆฝ์„ฑ: JVM์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์žฅ์  ์ค‘ ํ•˜๋‚˜๋Š” ํ”Œ๋žซํผ ๋…๋ฆฝ์„ฑ์ž…๋‹ˆ๋‹ค. JVM ๋•๋ถ„์— Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ฝ”๋“œ ์ˆ˜์ • ์—†์ด ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. JVM์€ Java ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ณธ ํ”Œ๋žซํผ์— ํŠน์ •ํ•œ ๊ธฐ๋ณธ ๊ธฐ๊ณ„ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋‹ค์–‘ํ•œ ํ•˜๋“œ์›จ์–ด ๋ฐ ์šด์˜ ์ฒด์ œ์—์„œ ์›ํ™œํ•œ ์‹คํ–‰์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
  2. ํ™•์žฅ์„ฑ: JVM์€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ๊ธฐ๋Šฅ๊ณผ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ ๋•๋ถ„์— ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์„ฑ์„ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ์„ฑ๋Šฅ ์ €ํ•˜ ์—†์ด ๋งŽ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๊ณ  ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ: JVM์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์€ ์‹œ์Šคํ…œ ์ž์›์˜ ์ตœ์  ํ™œ์šฉ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ(Heap, Stack, Method Area ๋ฐ PC Register)์„ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฐœ์ฒด๊ฐ€ ์ฐจ์ง€ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ํšŒ์ˆ˜ํ•˜๋Š” ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ์ค„์ด๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
  4. ์ตœ์ ํ™”๋œ ๋ฐ”์ดํŠธ์ฝ”๋“œ ์‹คํ–‰: JVM์€ JIT(Just-In-Time) ์ปดํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ Java ๋ฐ”์ดํŠธ์ฝ”๋“œ ์‹คํ–‰์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค. JIT ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋Ÿฐํƒ€์ž„ ์ค‘์— ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ์›์‹œ ๊ธฐ๊ณ„ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ž์ฃผ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜๊ณ  ๋‚˜์ค‘์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ปดํŒŒ์ผ๋œ ์ฝ”๋“œ๋ฅผ ์บ์‹ฑํ•˜์—ฌ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ „์ฒด ์‹คํ–‰ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
  5. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜: JVM์˜ ์ž๋™ํ™”๋œ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฐœ์ฒด๊ฐ€ ์ฐจ์ง€ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹น ํ•ด์ œํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘์€ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ž‘์—…์„ ๋‹จ์ˆœํ™”ํ•ฉ๋‹ˆ๋‹ค.

JVM ์•„ํ‚คํ…์ฒ˜์˜ ํ•œ๊ณ„

  1. ์„ฑ๋Šฅ ์˜ค๋ฒ„ํ—ค๋“œ: JVM์€ ํ•ด์„ ๋ฐ ์ปดํŒŒ์ผ ํ”„๋กœ์„ธ์Šค๋กœ ์ธํ•ด ์•ฝ๊ฐ„์˜ ์„ฑ๋Šฅ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•˜๊ณ  ๋Ÿฐํƒ€์ž„ ์ค‘์— ๋„ค์ดํ‹ฐ๋ธŒ ๋จธ์‹  ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด ๋จธ์‹  ์ฝ”๋“œ๋กœ ์ง์ ‘ ์ปดํŒŒ์ผ๋˜๋Š” ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋ณด๋‹ค ์‹คํ–‰ ์†๋„๊ฐ€ ๋А๋ ค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰: ํด๋ž˜์Šค ๋กœ๋”, ์‹คํ–‰ ์—”์ง„ ๋ฐ ๋Ÿฐํƒ€์ž„ ๋ฐ์ดํ„ฐ ์˜์—ญ๊ณผ ๊ฐ™์€ JVM์˜ ๋‹ค์–‘ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ฆ๊ฐ€๋œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์€ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ œํ•œ๋œ ์žฅ์น˜์—์„œ ์‹คํ–‰๋˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ์˜ํ–ฅ์„ ๋ฏธ์ณ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘ ๋”ธ๊พน์งˆ: JVM์˜ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘ ๊ธฐ๋Šฅ์€ ๋งŽ์€ ์ด์ ์„ ์ œ๊ณตํ•˜์ง€๋งŒ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ตœ์ ํ™”๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ๋Š” ์ „์ฒด ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘ ์ฃผ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์„ ์ผ์‹œ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ "stop-the-world" ์ผ์‹œ ์ค‘์ง€๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ผ์‹œ ์ค‘์ง€๋Š” ํŠนํžˆ ์ฒ˜๋ฆฌ๋Ÿ‰์ด ๋งŽ์€ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ์— ์ƒ๋‹นํ•œ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

JVM ๋ฐ AppMaster.io : No-code ๊ฐœ๋ฐœ ํ–ฅ์ƒ

AppMaster.io๋Š” ๋ฐฑ์—”๋“œ, ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹ ์†ํ•˜๊ฒŒ ์ƒ์„ฑํ•˜๋„๋ก ์„ค๊ณ„๋œ ๊ฐ•๋ ฅํ•œ ์ฝ”๋“œ ์—†๋Š” ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ์ด ํ”Œ๋žซํผ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ์ง๊ด€์ ์ธ ๋Œ์–ด์„œ ๋†“๊ธฐ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ , ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๋ฐ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์š”๊ตฌ ์‚ฌํ•ญ์ด ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ์ฒ˜์Œ๋ถ€ํ„ฐ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์žฌ์ƒ์„ฑํ•˜์—ฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์ƒ์„ฑ, ์ปดํŒŒ์ผ ๋ฐ ๋ฐฐํฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ๊ธฐ์ˆ  ๋ถ€์ฑ„๊ฐ€ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ๊ด‘๋ฒ”์œ„ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ AppMaster.io๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ฌ๋Ÿฌ ๋ฐฉ์‹์œผ๋กœ JVM ์•„ํ‚คํ…์ฒ˜์˜ ์ด์ ์„ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Java ๊ธฐ๋ฐ˜ ๋„๊ตฌ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: JVM์˜ ๊ด‘๋ฒ”์œ„ํ•œ Java ๊ธฐ๋ฐ˜ ๋„๊ตฌ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—์ฝ”์‹œ์Šคํ…œ์€ AppMaster.io๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์ถ•๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Java ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ฉํ•˜๋ฉด ์ผ๋ฐ˜์ ์ธ ๊ฐœ๋ฐœ ์ž‘์—…์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ธฐ๋Šฅ์„ ํฌ๊ฒŒ ํ–ฅ์ƒํ•˜๊ณ  ๊ฐœ๋ฐœ ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ™•์žฅ์„ฑ: ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์™€ ๊ฐ™์€ JVM์˜ ํ™•์žฅ์„ฑ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ๊ธฐ๋ฐ˜์ด ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ํšจ๊ณผ์ ์œผ๋กœ ํ™•์žฅ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AppMaster.io๋Š” JVM ๊ธฐ๋Šฅ์„ ํ†ตํ•ฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์šด์˜ ์ฒด์ œ ๋ฐ ์žฅ์น˜์—์„œ ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ตœ์ ํ™”๋œ ์„ฑ๋Šฅ: JIT(Just-In-Time) ์ปดํŒŒ์ผ ๋ฐ ์ž๋™ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ณผ ๊ฐ™์€ JVM์˜ ์ตœ์ ํ™” ๊ธฐ๋Šฅ์€ AppMaster.io์—์„œ ์ƒ์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์„ ๋”์šฑ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ตœ์ ํ™”๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฆฌ์†Œ์Šค ํ™œ์šฉ์„ ๊ทน๋Œ€ํ™”ํ•˜์—ฌ AppMaster.io ๋นŒ๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋” ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ์‹คํ–‰๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ: AppMaster.io๋Š” JVM์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ์ค„์ด๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ JVM์˜ ์•„ํ‚คํ…์ฒ˜๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๊ณผ ์ด์ ์„ ํ†ตํ•ด AppMaster.io๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์ถ•๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ๊ณผ ๊ธฐ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. JVM์˜ ๊ด‘๋ฒ”์œ„ํ•œ ์—์ฝ”์‹œ์Šคํ…œ๊ณผ ์ตœ์ ํ™” ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•จ์œผ๋กœ์จ AppMaster.io๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋”์šฑ ๊ฐ•๋ ฅํ•˜๊ณ  ํšจ์œจ์ ์ธ no-code ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ (JVM)์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

JVM(Java Virtual Machine)์€ Java ๋ฐ”์ดํŠธ์ฝ”๋“œ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ œ๊ณต, ๋‹ค์–‘ํ•œ ํ•˜๋“œ์›จ์–ด ๋ฐ ์šด์˜ ์ฒด์ œ ๊ฐ„ ํ”Œ๋žซํผ ๋…๋ฆฝ์„ฑ ๊ตฌํ˜„์„ ๋‹ด๋‹นํ•˜๋Š” Java ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์˜ ํ•„์ˆ˜ ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค.

JVM์˜ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

JVM์˜ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ์—๋Š” ํด๋ž˜์Šค ๋กœ๋”, ๋Ÿฐํƒ€์ž„ ๋ฐ์ดํ„ฐ ์˜์—ญ, ์‹คํ–‰ ์—”์ง„, JIT ์ปดํŒŒ์ผ๋Ÿฌ ๋ฐ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

JVM์€ ์–ด๋–ป๊ฒŒ ํ”Œ๋žซํผ ๋…๋ฆฝ์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๊นŒ?

JVM์€ Java ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ณธ ์šด์˜ ์ฒด์ œ ๋ฐ ํ•˜๋“œ์›จ์–ด ๊ณ ์œ ์˜ ๊ธฐ๋ณธ ๊ธฐ๊ณ„ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ํ”Œ๋žซํผ ๋…๋ฆฝ์„ฑ์„ ๋ณด์žฅํ•˜๋ฏ€๋กœ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ˆ˜์ • ์—†์ด ์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

JVM Classloader์˜ ์—ญํ• ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

JVM Classloader๋Š” ๋””์Šคํฌ์—์„œ JVM ๋ฉ”๋ชจ๋ฆฌ๋กœ Java ํด๋ž˜์Šค๋ฅผ ๋กœ๋“œํ•˜๊ณ , ํด๋ž˜์Šค ์ข…์†์„ฑ์„ ํ•ด๊ฒฐํ•˜๊ณ , ํ”„๋กœ๊ทธ๋žจ ๋Ÿฐํƒ€์ž„ ์ค‘์— ํด๋ž˜์Šค๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

JVM์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ•˜๋‚˜์š”?

JVM์€ Heap, Stack, Method Area, PC Register ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ์˜์—ญ์„ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฐœ์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์ž๋™์œผ๋กœ ํ•ด์ œํ•˜๋Š” ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ์ค„์ด๊ณ  ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค.

JVM์—์„œ JIT ์ปดํŒŒ์ผ๋Ÿฌ์˜ ์šฉ๋„๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

JVM์˜ JIT(Just-In-Time) ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋Ÿฐํƒ€์ž„ ์ค‘์— Java ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ณธ ๊ธฐ๊ณ„ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ž์ฃผ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜๊ณ  ๋‚˜์ค‘์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ปดํŒŒ์ผ๋œ ์ฝ”๋“œ๋ฅผ ์บ์‹ฑํ•˜์—ฌ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‹คํ–‰ ์†๋„๋ฅผ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค.

JVM ๋Ÿฐํƒ€์ž„ ๋ฐ์ดํ„ฐ ์˜์—ญ์ด๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

JVM ๋Ÿฐํƒ€์ž„ ๋ฐ์ดํ„ฐ ์˜์—ญ์€ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด JVM์—์„œ ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ํž™, ์Šคํƒ, ๋ฉ”์„œ๋“œ ์˜์—ญ, ์ƒ์ˆ˜ ํ’€ ๋ฐ PC ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

JVM ์•„ํ‚คํ…์ฒ˜์˜ ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

JVM ์•„ํ‚คํ…์ฒ˜์˜ ์ด์ ์—๋Š” ํ”Œ๋žซํผ ๋…๋ฆฝ์„ฑ, ํ™•์žฅ์„ฑ, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, ๋ฐ”์ดํŠธ์ฝ”๋“œ ์‹คํ–‰ ์ตœ์ ํ™”, ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๊ฐ์†Œ ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ๋„์›€์ด ๋˜๋Š” ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘ ์ง€์›์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

JVM ์•„ํ‚คํ…์ฒ˜์˜ ํ•œ๊ณ„๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

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

AppMaster.io์˜ ์ฝ”๋“œ ์—†๋Š” ํ”Œ๋žซํผ์ด JVM์—์„œ ์–ด๋–ค ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

AppMaster.io์˜ no-code ํ”Œ๋žซํผ์€ Java ๊ธฐ๋ฐ˜ ๋„๊ตฌ ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜๊ณ  ํ™•์žฅ์„ฑ, ์ตœ์ ํ™”๋œ ๋ฐ”์ดํŠธ์ฝ”๋“œ ์‹คํ–‰ ๋ฐ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ณผ ๊ฐ™์€ JVM ๊ธฐ๋Šฅ์„ ํ†ตํ•ฉํ•˜์—ฌ AppMaster.io๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์ถ•๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํšจ์œจ์„ฑ๊ณผ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒํ•จ์œผ๋กœ์จ JVM์˜ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‰ฌ์šด ์‹œ์ž‘
๋ฉ‹์ง„๋งŒ๋“ค๊ธฐ

๋ฌด๋ฃŒ ์š”๊ธˆ์ œ๋กœ AppMaster๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”.
์ค€๋น„๊ฐ€ ๋˜๋ฉด ์ ์ ˆํ•œ ๊ตฌ๋…์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๋‹ค
์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ (JVM) ์•„ํ‚คํ…์ฒ˜ ์ดํ•ด | AppMaster