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

2025. 4. 14. 14:42ยทโ˜•Java/๐Ÿ“Java Programming

(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 ๋‚ด๋ถ€์˜ ๋™์ž‘์„ ์‚ดํŽด๋ณด๋ฉด ์ดํ•ด๊ฐ€ ๋”์šฑ ์‰ฌ์šธ ๊ฒƒ ์ด๋‹ค.

'โ˜•Java > ๐Ÿ“Java Programming' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Java] Enum ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ  (1) 2025.05.05
[Java] Java์™€ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€?  (0) 2025.03.06
[Java] ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™”์— ๋Œ€ํ•œ ์ดํ•ด  (0) 2024.11.05
[Java] Annotation ์ด๋ž€? ( ์• ๋…ธํ…Œ์ด์…˜ )  (0) 2024.11.05
[Java] JVM ๋™์ž‘ ์›๋ฆฌ  (1) 2024.10.23
'โ˜•Java/๐Ÿ“Java Programming' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Java] Enum ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ
  • [Java] Java์™€ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€?
  • [Java] ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™”์— ๋Œ€ํ•œ ์ดํ•ด
  • [Java] Annotation ์ด๋ž€? ( ์• ๋…ธํ…Œ์ด์…˜ )
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด๋ณด๊ธฐ (139) N
      • ๐ŸŽ“๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต (24) N
        • ๐Ÿ–ฅ๏ธ์ปดํ“จํ„ฐ๊ณผํ•™๊ณผ (1)
        • ๐ŸŒ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ… (9) N
        • โš™๏ธ์ปดํ“จํ„ฐ์˜ ์ดํ•ด (11)
        • ๐Ÿ›๏ธ์„ธ๊ณ„์˜์ •์น˜์™€๊ฒฝ์ œ (3)
      • ๐Ÿ“šComputer Science (0)
      • ๐Ÿ› ๏ธBackend (2)
      • โ˜•Java (0)
        • ๐Ÿ“Java Programming (9)
        • ๐ŸงฉJava Design Pattern (1)
      • ๐ŸŒณSpring (9)
        • ๐ŸŒฑSpring Framework (6)
        • ๐ŸŒฑSpring Security (1)
      • โšกPython (13)
      • ๐Ÿ›ข๏ธDatabase (0)
      • ๐ŸŒฟGitHub (1)
      • ๐ŸŒ Network (7)
        • ๐Ÿ“œHTTP (7)
      • ๐Ÿš€DevOps (1)
      • Algorithm Problem Solving (2)
      • Data Structure (1)
      • JavaScript (1)
      • โ›บ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ (65)
      • ์žก๋‹ด (1)
      • ์ •๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ธ€ (2)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • GitHub
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ๋ฉ”๋ชจ๋ฆฌ
    ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ…๊ฐœ๋ก 
    Spring Framework
    ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ…
    ๋ฐฉํ†ต๋Œ€
    Java
    ์ž๋ฐ”
    spring
    ์ปดํ“จํ„ฐ์˜ ์ดํ•ด
    ์ปดํŒŒ์ผ๋Ÿฌ
    ํด๋ผ์šฐ๋“œ
    ์œ ๋น„์ฟผํ„ฐ์Šค
    ํด๋ž˜์Šค
    ํŒŒ์ด์ฌ
    ์Šคํ”„๋ง
    ํ•จ์ˆ˜
    Python
    ์„ธ๊ณ„ํ™”
    ๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต
    ๋ฐฉ์†ก๋Œ€
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.1
junbin2
[Java] JVM๊ณผ ์ž๋ฐ” ์‹คํ–‰ ์›๋ฆฌ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”