Language/JAVA

[JAVA] ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ

๊ต ๋ฏผ 2024. 8. 25. 15:37
๐Ÿ“ŒJVM (Java Virtual Machine)์ด๋ž€?  

 

:  ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ ์œผ๋กœ, JVM ์„ค์น˜๋งŒ ํ•œ๋‹ค๋ฉด OS์— ์ƒ๊ด€์—†์ด ์ž๋ฐ”์˜ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. 

  • JVM ์‹คํ–‰ ์ˆœ์„œ
    1.  .java ํŒŒ์ผ์„ ์ปดํŒŒ์ผ๋Ÿฌ(Compiler)๋ฅผ ํ†ตํ•ด .class ํŒŒ์ผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
    2.  .class ํŒŒ์ผ์„ JVM์˜ ClassLoader(ํด๋ž˜์Šค๋กœ๋”)์—๊ฒŒ ๋ณด๋‚ธ๋‹ค.
    3. ํด๋ž˜์Šค๋กœ๋”์—์„œ JVM ๋Ÿฐํƒ€์ž„ ์˜์—ญ์œผ๋กœ ๋กœ๋”ฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฐ๋‹ค.

 

๋ฉ”๋ชจ๋ฆฌ๋ž€?

: ์ฃผ๊ธฐ์–ต์žฅ์น˜์ธ ํ•˜๋“œ์›จ์–ด RAM์„ ์˜๋ฏธํ•˜๋ฉฐ, ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค.

  • ์ปดํ“จํ„ฐ์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ์˜์—ญ์€ RAM์ด๋ž€ ๊ธฐ์–ต์žฅ์น˜ ๋‚ด ๊ณ ์œ ํ•œ ์˜์—ญ์„ ํ• ๋‹น๋ฐ›๋Š”๋‹ค.

→ ํšจ์œจ์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๊ธฐ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์€ ๊ตฌ๋ถ„๋œ๋‹ค.

 

์ž๋ฐ”์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ

- ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด JVM(Java Virtual Machine)์€ OS๋กœ๋ถ€ํ„ฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›๊ณ , ๋ฉ”๋ชจ๋ฆฌ๋“ค์€ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์— ๋งž๊ฒŒ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์˜์—ญ์œผ๋กœ ๋‚˜๋ˆ„์–ด ์‚ฌ์šฉ๋œ๋‹ค. 

 

JVM์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ

์ž๋ฐ”์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์€ ํฌ๊ฒŒ  3๊ฐ€์ง€๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

  1. Static(Method) ์˜์—ญ 
  • Class์˜ ์ •๋ณด, ์ „์—ญ ๋ณ€์ˆ˜, ์ •์  ๋ณ€์ˆ˜, ์ƒ์„ฑ์ž, static๋กœ ์„ ์–ธ๋œ ๊ฒƒ๋“ค์„ ์ €์žฅ
  • ์ปดํŒŒ์ผ ์‹œ๊ฐ„ ๋™์•ˆ ํ• ๋‹น ๋œ ๋ฉ”๋ชจ๋ฆฌ๋กœ, ๊ณ ์ •๋œ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๋ฉฐ ๋Ÿฐํƒ€์ž„ ์ค‘์—๋Š” ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Œ
  • ํ•ด๋‹น ์˜์—ญ์— ์žˆ๋Š” ๊ฒƒ์€ ์–ด๋””์„œ๋“  ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ์—, ๋ฌด๋ถ„๋ณ„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑํ˜„์ƒ ๋ฐœ์ƒ
  • JVM์ด ๋™์ž‘ํ•ด์„œ ํด๋ž˜์Šค๊ฐ€ ๋กœ๋”ฉ๋  ๋•Œ ์ƒ์„ฑ, ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ฐ€์žฅ ๊ธธ๊ฒŒ ์กด์žฌํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ
  1. Stack : ํ”„๋กœ๊ทธ๋žจ์ด ์ž๋™์œผ๋กœ ํ• ๋‹น, ํ•ด์ง€ํ•˜๋Š” ์ž„์‹œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ
  • ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•(int, double, boolean ๋“ฑ), ์ง€์—ญ๋ณ€์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜, Heap์˜์—ญ์˜ ์ฐธ์กฐ๊ฐ’์ด ์ €์žฅ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ
  • LIFO (Last In First Out) ๋ฐฉ์‹ : ๋งˆ์ง€๋ง‰์— ๋“ค์–ด๊ฐ„ ๊ฒƒ์ด ๋จผ์ € ๋‚˜๊ฐ€๋Š” ๊ตฌ
  • ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ - ์ง€์—ญ๋ณ€์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜, ๋ฆฌํ„ด๊ฐ’ ๋“ฑ ์ €์žฅ
  • ํ•จ์ˆ˜ ์ข…๋ฃŒ ์‹œ - ํ•ด๋‹น ํ•จ์ˆ˜์— ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ์ž๋™ ํ•ด์ œ
  • ์ปดํŒŒ์ผ ๋‹จ๊ณ„(์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์‹คํ–‰ํŒŒ์ผ์ด ๋˜๋Š” ๋™์•ˆ์˜ ์ƒํƒœ)์—์„œ ์šด์˜๋œ๋‹ค.
  1. Heap : ๊ฐœ๋ฐœ์ž(์‚ฌ์šฉ์ž)์— ์˜ํ•ด ํ• ๋‹น/ํ•ด์ œ๋˜๋Š” ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•œ ์˜์—ญ.
  • GC๊ฐ€ ์ด๋ฃจ์–ด์ง€๋Š” ์ฃผ์š” ์˜์—ญ
  • new ํ‚ค์›Œ๋“œ๋กœ ์ƒ์„ฑ๋œ ๊ฐ์ฒด์™€ ๋ฐฐ์—ด, ์ฐธ์กฐ๊ฐ’(๊ฐ์ฒด)์ด ์ €์žฅ๋œ๋‹ค. (ex. Class)
  • ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ํ™•์‹คํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋Ÿฐํƒ€์ž„์‹œ ํ• ๋‹น๋˜๋Š” ์˜์—ญ์ด๋‹ค.
  • ์Šค๋ ˆ๋“œ์˜ ๊ฐœ์ˆ˜์— ์ƒ๊ด€์—†์ด ํ•˜๋‚˜์˜ ์˜์—ญ๋งŒ ์กด์žฌํ•œ๋‹ค. 
    cf. Stack ์˜์—ญ์˜ ๊ฒฝ์šฐ ์Šค๋ ˆ๋“œ๋ณ„๋กœ 1๊ฐœ์”ฉ ์ƒ์„ฑ๋œ๋‹ค. 

โœ๏ธ 


*์ฐธ๊ณ  ์‚ฌ์ดํŠธ

[CS/Basic] ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ, Heap๊ณผ Stack์—” ์–ด๋–ค ๋ฐ์ดํ„ฐ๊ฐ€ ์Œ“์ผ๊นŒ? (tistory.com)