๋ฐฑ์—”๋“œ(Back-End) ๊ฐœ๋ฐœ/Java

JAVA๋ž€? ์ž๋ฐ”์˜ ๊ตฌ๋™ ์›๋ฆฌ (JVM์˜ ํŠน์ง•)

rabo93 2025. 1. 19. 01:43

์ž๋ฐ”๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด !!

 

์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์˜ ๊ตฌ๋™์›๋ฆฌ

 

1. ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค (.java ํ™•์žฅ์ž์˜ ์†Œ์ŠคํŒŒ์ผ)

2. ์ปดํŒŒ์ผ๋Ÿฌ(java.exe)๊ฐ€ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. (.class ํ™•์žฅ์ž์˜ ํด๋ž˜์Šค ํŒŒ์ผ)

3. ๋Ÿฐ์ฒ˜(java.exe)๋กœ ์ž๋ฐ” ๊ฐ€์ƒ๋จธ์‹ (JVM)์„ ๊ตฌ๋™์‹œํ‚จ๋‹ค.

4. ์ž๋ฐ” ๊ฐ€์ƒ๋จธ์‹ (JVM)์ด ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•˜๋ฉฐ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋œ๋‹ค.

( * bytecode๋Š” ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด๋กœ ๋ณ€ํ™˜๋œ ์ฝ”๋“œ. JVM๋งŒ ์„ค์น˜ ๋˜์–ด ์žˆ์œผ๋ฉด bytecode๋Š” ์–ด๋–ค ์šด์˜์ฒด์ œ์—์„œ๋ผ๋„ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ค. )

 

 

 

์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ (JVM) 

 

* ๊ตฌ์„ฑ ์š”์†Œ 

1. ํด๋ž˜์Šค ๋กœ๋”(Class Loader)

 : ํ•„์š”ํ•œ ํด๋ž˜์Šค ํŒŒ์ผ์„ ์ฐพ๊ณ  ๋™์ ์œผ๋กœ ๋กœ๋“œํ•˜์—ฌ ์‹คํ–‰ ์‹œ์— ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. ๋กœ๋“œ๋œ ํด๋ž˜์Šค๋Š” JVM์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์ €์žฅ๋œ๋‹ค.

2. ์‹คํ–‰ ์—”์ง„(Execution Engine)

 : ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , ์ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•œ๋‹ค.

3. ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ(Memory Areas)

 : Java ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰๊ณผ ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ์™€ ์ž์›์„ ์ €์žฅํ•œ๋‹ค. ์ฃผ์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์œผ๋กœ๋Š” ๋ฉ”์„œ๋“œ ์˜์—ญ(Method Area), ํž™(Heap), ์Šคํƒ(Stack), PC ๋ ˆ์ง€์Šคํ„ฐ(Program Counter Register), ๋„ค์ดํ‹ฐ๋ธŒ ๋ฉ”์„œ๋“œ ์Šคํƒ(Native Method Stack)์ด ์กด์žฌํ•œ๋‹ค

  - ๋ฉ”์„œ๋“œ ์˜์—ญ : ํด๋ž˜์Šค ์ •๋ณด, ์ƒ์ˆ˜ ํ’€(Constant Pool), ๋ฉ”์„œ๋“œ ์ฝ”๋“œ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ์ €์žฅ.

  - ํž™ : ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ ๊ฐ์ฒด์™€ ๋ฐฐ์—ด์„ ์ €์žฅ. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์€ ํž™์—์„œ ๋ถˆํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ์ž๋™์œผ๋กœ ์ •๋ฆฌํ•จ.

  - ์Šคํƒ : ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ๊ณผ ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ. 

 

* ํŠน์ง•

- ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ๊ฐ€์ƒ ๋จธ์‹ 

๋ชจ๋“  ๊ธฐ๋ณธ ํƒ€์ž…์˜ ์ •์˜๋ฅผ ๋ช…ํ™•ํžˆ ํ•จ์œผ๋กœ์จ ํ”Œ๋žซํผ ๋…๋ฆฝ์„ฑ ๋ณด์žฅ

- JVM์€ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(Garbage Collection)์„ ํ†ตํ•ด ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌ

- JVM์€ Java์˜ ํฐ ์žฅ์ ์ธ ์ด์‹์„ฑ, ์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, ์•ˆ์ •์„ฑ ๋ฐ ํ’๋ถ€ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ƒํƒœ๊ณ„๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ

์‹คํ–‰ ์†๋„, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰, ์‹œ์ž‘ ์‹œ๊ฐ„ ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ์™€ ๊ฐ™์€ ์ผ๋ถ€ ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค.

 

 

 

์™œ ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ (JVM) ๊ตฌ์กฐ๋ฅผ ์•Œ์•„์•ผ ํ•˜๋Š”๊ฐ€?

 

์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ ์˜ ๊ตฌ์„ฑ๊ณผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์•„๋Š” ๊ฒƒ์€ ์ž๋ฐ” ๊ฐœ๋ฐœ์ž๋กœ์„œ ํ•„์ˆ˜์ ์ธ ์ผ์ด๋‹ค.

ํŠนํžˆ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์ด ํ•œ์ •๋˜์–ด ์žˆ๊ธฐ์— ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ•˜๋А๋ƒ์— ๋”ฐ๋ผ ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ์ด ์ขŒ์šฐ๋œ๋‹ค

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