๐Ÿ› ๏ธBackend/โ˜•Java

[Java] JVM๊ณผ ์ž๋ฐ” ์‹คํ–‰ ์›๋ฆฌ

junbin2 2025. 4. 14. 14:42

(1) ์ž๋ฐ”์˜ ํ”„๋กœ๊ทธ๋žจ ๊ธฐ๋ณธ์ ์ธ ๋™์ž‘ ๊ณผ์ •

[1] ์†Œ์Šค ์ฝ”๋“œ ์ž‘์„ฑ -> .java ์†Œ์Šค ํŒŒ์ผ ์ƒ์„ฑ

[2] ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ํ†ตํ•ด .java ์†Œ์Šค ํŒŒ์ผ์„ .class(๋ฐ”์ดํŠธ ์ฝ”๋“œ) ํŒŒ์ผ๋กœ ๋ณ€ํ™˜

[3] JVM์„ ํ†ตํ•ด .class ํŒŒ์ผ์„ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ -> ๊ธฐ๊ณ„์–ด๋Š” ์šด์˜์ฒด์ œ๋ฅผ ํ†ตํ•ด ์‹คํ–‰

[4] ๊ฒฐ๊ณผ์ ์œผ๋กœ ์šด์˜์ฒด์ œ๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•จ.

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

 

(2) ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ

 - ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ž‘์„ฑํ•œ .java ์†Œ์Šค์ฝ”๋“œ๋ฅผ JVM ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก ๋ฐ”์ดํŠธ์ฝ”๋“œ๋กœ ๋ฒˆ์—ญ์„ ํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค.

 - ์ปดํŒŒ์ผ ๊ณผ์ •์—์„œ ๊ตฌ๋ฌธ ๋ถ„์„, ํƒ€์ž… ๊ฒ€์‚ฌ, ์ตœ์ ํ™”, ๋ฐ”์ดํŠธ ์ฝ”๋“œ ์ƒ์„ฑ์„ ํ•ด์ค€๋‹ค.

 

(3) JVM(Java Virtual Machine)

 - ์ž๋ฐ” ๋ฐ”์ดํŠธ์ฝ”๋“œ(.class)๋ฅผ ์ฝ์–ด์„œ ์šด์˜์ฒด์ œ๋‚˜ CPU์— ๋งž๊ฒŒ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ์‹คํ–‰ํ•ด์ฃผ๋Š” ๊ฐ€์ƒ ๋จธ์‹ ์ด๋‹ค.

 - ๊ฒฐ๊ตญ ์ปดํ“จํ„ฐ๋Š” 0๊ณผ 1์ธ ๊ธฐ๊ณ„์–ด ๋ฐ–์— ๋ชป ์ฝ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ์— ๋งž๊ฒŒ ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญ์„ ํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค.

 - ์šด์˜์ฒด์ œ๋กœ ๋ถ€ํ„ฐ ๊ณต๊ฐ„์„ ํ• ๋‹น ๋ฐ›์œผ๋ฉด, JVM์€ ํ•ด๋‹น ๊ณต๊ฐ„์„ ์ž์ฒด์ ์œผ๋กœ ์ •์˜ํ•ด์„œ ์‚ฌ์šฉ์„ ํ•˜๊ฒŒ ๋œ๋‹ค.

 - ์ด๋•Œ JVM์ด ํ•ด๋‹น ๊ณต๊ฐ„์„ ๋‚˜๋ˆ ์„œ ์ด์šฉ์„ ํ•˜๋Š”๋ฐ, ๋Œ€ํ‘œ์ ์œผ๋กœ ๋ฉ”์„œ๋“œ, ํž™, ์Šคํƒ ์˜์—ญ ๋“ฑ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ง„๋‹ค.

[1] JVM์˜ ์ฃผ์š” ์—ญํ• 

 - ํด๋ž˜์Šค ๋กœ๋” : .class ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค์ฃผ๋Š” ์—ญํ• ์„ ํ•จ.

 - ๋ฐ”์ดํŠธ์ฝ”๋“œ ์‹คํ–‰๊ธฐ : ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•ด์„œ JIT ์ปดํŒŒ์ผํ•ด์„œ ์‹คํ–‰์„ ํ•ด์คŒ.

 - ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ : ํž™ / ์Šคํƒ ๊ด€๋ฆฌ + ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ์ •๋ฆฌ) ์—ญํ• ์„ ํ•ด์คŒ.

 - ์‰ฝ๊ฒŒ๋งํ•ด, OS์—์„œ JVM์—๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น JVM์€ ๊ทธ ์•ˆ์—์„œ ํž™/์Šคํƒ ๋“ฑ์˜ ์˜์—ญ์„ ๋งŒ๋“ค์–ด์„œ ์ด์šฉํ•จ.

 - ๊ฒฐ๋ก ์€, ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์—์„œ Java ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

(4) ์™œ JVM์ด .java ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์‹คํ–‰ํ•˜๋„๋ก ์•ˆ ๋งŒ๋“  ๊ฑธ๊นŒ?

 - ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๊ตฌ๋ฌธ ๋ถ„์„, ํƒ€์ž… ๊ฒ€์‚ฌ, ์ตœ์ ํ™” ๋“ฑ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ž˜๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Œ.

 - .class ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋Š” ์ด๋ฏธ ์ •๋ฆฌ๋œ ์ฝ”๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ ์ดํ›„ JVM ์‹คํ–‰์ด ์˜คํžˆ๋ ค ์†๋„ ์ธก๋ฉด์—์„œ ์œ ๋ฆฌํ•จ.

 - ์ปดํŒŒ์ผ๋Ÿฌ์™€ JVM์„ ๋‚˜๋ˆ„๊ฒŒ ๋˜๋ฉด ๋‹ค๋ฅธ ์–ธ์–ด๋„ JVM ์œ„์—์„œ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ํฐ ์žฅ์ ์ด ์žˆ์Œ.

 - ์–ธ์–ด์—์„œ .class๋กœ ๋ณ€ํ™˜๋งŒ ํ•ด์ฃผ๋ฉด ๊ฒฐ๊ตญ ๋‹ค์–‘ํ•œ ์–ธ์–ด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

 

(5) ๊ฒฐ๋ก 

 - ์ž๋ฐ”์˜ ๋‚ด๋ถ€ ๋™์ž‘์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋‹ด์•˜์ง€๋งŒ, ์ดํ•ด๋ฅผ ๋•๊ณ ์ž ํ‘œ๋ฉด์ ์ธ ๋‚ด์šฉ์ผ ๋ฟ ๋” ๊นŠ์€ ๋‚ด์šฉ์ด ์žˆ๋‹ค.

 - JVM๊ณผ ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ ๋‘ ๊ฐœ๋ฅผ ์“ฐ๋Š” ๊ฑด ๋น„ํšจ์œจ ๊ฐ™์ง€๋งŒ ๋‹ค ์ด์œ ๊ฐ€ ์žˆ๋‹ค ์ด๋ง์ด๋‹ค..

 - ํฐ ํ‹€์„ ์žก์•˜๊ธฐ ๋•Œ๋ฌธ์— JVM ๋‚ด๋ถ€์˜ ๋™์ž‘์„ ์‚ดํŽด๋ณด๋ฉด ์ดํ•ด๊ฐ€ ๋”์šฑ ์‰ฌ์šธ ๊ฒƒ ์ด๋‹ค.