[Java] JVM ๋™์ž‘ ์›๋ฆฌ

2024. 10. 23. 05:07ยท๐Ÿ› ๏ธBackend/โ˜•Java

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

 

JVM(Java Virtual Machine) ๋™์ž‘ ์›๋ฆฌ

JVM์€ "java ClassName" ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์‹คํ–‰์„ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ClassName์€ ๋ฐ˜๋“œ์‹œ main ๋ฉ”์„œ๋“œ๊ฐ€ ๋“ค์–ด์žˆ๋Š” ์ฃผ ํด๋ž˜์Šค์—ฌ์•ผ ํ•œ๋‹ค. JVM์ด ์‹คํ–‰์ด ๋œ ํ›„ JVM์˜ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ํด๋ž˜์Šค ๋กœ๋”๊ฐ€ ํ•„์š”ํ•œ ํด๋ž˜์Šค ํŒŒ์ผ์ธ java.lang ํŒจํ‚ค์ง€์˜ ํด๋ž˜์Šค ํŒŒ์ผ๋“ค์„ ๋จผ์ € ๋กœ๋“œ ํ•ด์ค€๋‹ค. ์ดํ›„, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํด๋ž˜์Šค ๋กœ๋”๊ฐ€ main ๋ฉ”์„œ๋“œ ์ฃผ ํด๋ž˜์Šค๋ฅผ ๋กœ๋“œ๋ฅผ ํ•ด์ฃผ๊ฒŒ ๋œ๋‹ค. ์ด๋Ÿฌํ•œ ๊ณผ์ •์ด ๋‹ค ๋๋‚˜๋ฉด, JVM์€ main ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์‹คํ–‰์„ ์‹œ์ž‘ํ•˜๊ฒŒ ๋œ๋‹ค.

 

JVM ๋™์ž‘ ์ˆœ์„œ

1. JVM ์‹คํ–‰

2. JVM ์šด์˜์ฒด์ œ๋กœ ๋ถ€ํ„ฐ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ( Heap , Stack , Method Area )

3. (๋กœ๋“œ ๊ณผ์ •) JVM ์•ˆ์˜ ํด๋ž˜์Šค ๋กœ๋” MyProject ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ

-> ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํด๋ž˜์Šค ๋กœ๋”๊ฐ€ main ์ฃผ ํด๋ž˜์Šค MyProject๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•จ.

4. JVM์˜ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ํด๋ž˜์Šค ๋กœ๋”๋ฅผ ํ†ตํ•ด ํ•„์š”ํ•œ ํด๋ž˜์Šค ํŒŒ์ผ๋“ค ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ

-> java.lang.Object , java.lang.String, java.lang.System ๋“ฑ langํŒจํ‚ค์ง€ -> ํ•„์ˆ˜์  ๋กœ๋“œ ๊ธฐ๋ณธ ํด๋ž˜์Šค

-> ์ฃผ ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉ๋˜๋Š” static ์ดˆ๊ธฐํ™” ๋ธ”๋ก ๋ฐ static ํ•„๋“œ

5. main ๋ฉ”์„œ๋“œ ์‹คํ–‰

-> main ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰ ๋˜๊ณ , JVM์€ ํ•ด๋‹น ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ์ฝ๊ณ  ํ•ด์„ํ•˜์—ฌ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•˜๊ฒŒ ๋œ๋‹ค.์ด ๋ณ€ํ™˜ ๊ณผ์ •์€ JIT ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์‚ฌ์šฉ์ด ๋œ๋‹ค.

-> ๋ณ€ํ™˜ ๋œ ๊ธฐ๊ณ„์–ด๋Š” ์šด์˜์ฒด์ œ๋ฅผ ํ†ตํ•ด CPU์—๊ฒŒ ์ „๋‹ฌ์ด ๋˜๊ณ , CPU๊ฐ€ ์ด ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ์ง€์‹œ๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค.

-> CPU๋Š” ์šด์˜์ฒด์ œ ์ง€์‹œ๋ฅผ ๋ฐ›๊ณ  ๊ธฐ๊ณ„์–ด ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ํ”„๋กœ๊ทธ๋žจ์˜ ๋กœ์ง์— ๋”ฐ๋ผ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

6. ์—ฐ๊ด€๋œ ๊ฐ์ฒด ์ƒ์„ฑ ์‹œ import ํŒจํ‚ค์ง€ ์ฃผ์†Œ๊ฐ’ ์ฐธ์กฐํ•ด์„œ JVM ํด๋ž˜์Šค ๋กœ๋” ํ•ด๋‹น ํด๋ž˜์Šค ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ

-> ํ•ด๋‹น ํด๋ž˜์Šค ๋กœ๋”๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํด๋ž˜์Šค ๋กœ๋” ์ด๋‹ค.

-> ( ํ•œ ๋ฒˆ ๋กœ๋“œ๋œ ํด๋ž˜์Šค๋Š” JVM์˜ Method Area์— ์ €์žฅ์ด ๋œ๋‹ค. ์žฌ์‚ฌ์šฉ์„ฑ ์ฆ๊ฐ€ )

-> ์ด ํ›„ ๊ฐ์ฒด ์ƒ์„ฑ ์‹œ Method Area์—์„œ ๊ฐ€์ ธ์™€ Heap ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ๊ฐ์ฒด ์ƒ์„ฑ

7. ์†Œ์Šค ์ฝ”๋“œ ์ „๋ถ€ ์‹คํ–‰ ํ›„ main ๋ฉ”์„œ๋“œ ์ข…๋ฃŒ ๋ฐ JVM ๋ฉ”๋ชจ๋ฆฌ ์šด์˜์ฒด์ œ์— ๋ฐ˜๋‚ฉ

 

 

Heap / Stack / Method Area ์˜์—ญ์— ๊ด€ํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์„ ๊ธฐ์•ฝํ•˜๋ฉฐ...

JIT ์ปดํŒŒ์ผ๋Ÿฌ์— ๊ด€ํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์„ ๊ธฐ์•ฝํ•˜๋ฉฐ...

JVM๊ณผ ์šด์˜์ฒด์ œ ๋ฐ CPU ์ƒํ˜ธ ์ž‘์šฉ์€ ๋‹ค์Œ์„ ๊ธฐ์•ฝํ•˜๋ฉฐ...

 

 

๋งŒ์•ฝ JVM์— ๋Œ€ํ•ด์„œ ๋ชจ๋“ ๊ฑธ ์•Œ๊ณ ์‹ถ๋‹ค๋ฉด ์•„๋ž˜์˜ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ...

https://docs.oracle.com/javase/specs/jvms/se8/html/index.html

 

The Java® Virtual Machine Specification

Tim Lindholm Frank Yellin Gilad Bracha Alex Buckley

docs.oracle.com

 

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

[Java] ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™”์— ๋Œ€ํ•œ ์ดํ•ด  (2) 2024.11.05
[Java] Annotation ์ด๋ž€? ( ์• ๋…ธํ…Œ์ด์…˜ )  (4) 2024.11.05
[Java] ํด๋ž˜์Šค์™€ ๊ฐ์ฒด์˜ ์ •์˜  (9) 2024.10.05
[Java] ์ƒ์† ( Extends )  (6) 2024.05.01
[Java] ์˜ˆ์™ธ ( Exception )  (2) 2024.04.26
'๐Ÿ› ๏ธBackend/โ˜•Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Java] ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™”์— ๋Œ€ํ•œ ์ดํ•ด
  • [Java] Annotation ์ด๋ž€? ( ์• ๋…ธํ…Œ์ด์…˜ )
  • [Java] ํด๋ž˜์Šค์™€ ๊ฐ์ฒด์˜ ์ •์˜
  • [Java] ์ƒ์† ( Extends )
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด๋ณด๊ธฐ (182)
      • ๐ŸŽ“๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต (42)
        • โš™๏ธ์ปดํ“จํ„ฐ์˜ ์ดํ•ด (11)
        • ๐Ÿ’ป์ปดํ“จํ„ฐ๊ณผํ•™ ๊ฐœ๋ก  (9)
        • ๐Ÿ”ข์ž๋ฃŒ๊ตฌ์กฐ (7)
        • ๐ŸŒ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ… (11)
        • ๐Ÿ›๏ธ์„ธ๊ณ„์˜์ •์น˜์™€๊ฒฝ์ œ (3)
        • ๐Ÿ–ฅ๏ธ์ปดํ“จํ„ฐ๊ณผํ•™๊ณผ (1)
      • ๐Ÿ› ๏ธBackend (64)
        • ๐Ÿ“š๋ฐฑ์—”๋“œ ๊ณต๋ถ€ (4)
        • โ˜•Java (23)
        • ๐ŸŒณSpring (13)
        • โš™๏ธC (8)
        • โšกPython (13)
        • JavaScript (1)
        • ๐Ÿ›ข๏ธDatabase (0)
        • Algorithm Problem Solving (2)
      • ๐ŸŒ Network (7)
        • ๐Ÿ“œHTTP (7)
      • ๐Ÿš€DevOps (1)
      • โ›บ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ (64)
      • ์ •๋ณด (2)
      • ์ •๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ธ€ (2)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

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

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

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ์ปดํ“จํ„ฐ๊ณผํ•™ ๊ฐœ๋ก 
    Python
    Spring Framework
    ์œ ๋น„์ฟผํ„ฐ์Šค
    Java
    ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ…๊ฐœ๋ก 
    ํ•จ์ˆ˜
    ๋ฐฐ์—ด
    C
    ๋ฐฉํ†ต๋Œ€
    ์ž๋ฃŒ๊ตฌ์กฐ
    spring
    ์ž๋ฐ”
    ๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต
    ํŒŒ์ด์ฌ
    ๋ฐฉ์†ก๋Œ€
    ์ปดํ“จํ„ฐ์˜ ์ดํ•ด
    C์–ธ์–ด
    ์ž…์ถœ๋ ฅ
    C ์–ธ์–ด
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.1
junbin2
[Java] JVM ๋™์ž‘ ์›๋ฆฌ
์ƒ๋‹จ์œผ๋กœ

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