ํ•ด๋ฒ„๋‹ˆ 2023. 8. 24. 23:41
๋ฐ˜์‘ํ˜•

โ“๊ถ๊ธˆ์ฆโ“

์ตœ๊ทผ ๋ฉด์ ‘์„ ๋ณด๊ฒŒ๋๋Š”๋ฐ ๋‹ค๋Œ€๋‹ค ๋ฉด์ ‘์œผ๋กœ ์ง„ํ–‰๋˜์—ˆ๋‹ค.

๊ฐœ๋…์„ ๋˜์ง€๊ณ  ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์€ ์†์„ ๋“ค์–ด์„œ ์„ค๋ช…์„ ํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.

JVM์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ๋Š”์ง€, ์„ค๋ช…์„ ํ•ด์ค„์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์€ ์†์„ ๋“ค์–ด๋‹ฌ๋ผ๊ณ  ํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋‚˜๋Š” Java Virtual Machine์ด๋ผ๊ณ ๋งŒ ์•Œ๊ณ  ์žˆ์—ˆ๊ณ , ์ƒ์„ธํ•œ ๋‚ด์šฉ์€ ๋ชจ๋ฅด๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์•Œ์•„๋ณด๊ณ ์ž ๊ธ€์„ ์จ๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

 

 

 

 

Java Virtual Machine (JVM)

: ์ž๋ฐ”๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์ƒ ๊ธฐ๊ณ„

Java๋Š” OS์— ์ข…์†์ ์ด์ง€ ์•Š๋‹ค๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

OS์— ์ข…์†๋ฐ›์ง€ ์•Š๊ณ  ์‹คํ–‰๋˜๊ธฐ ์œ„ํ•ด์„  OS ์œ„์—์„œ Java๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ๋ฌด์–ธ๊ฐ€๊ฐ€ ํ•„์š”ํ•˜๋‹ค. 

๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ JVM์ด๋‹ค. 

 

ํ•œ ๋ฌธ์žฅ์œผ๋กœ ์ •๋ฆฌํ•˜์ž๋ฉด 

OS์— ์ข…์†๋ฐ›์ง€ ์•Š๊ณ  CPU๊ฐ€ Java๋ฅผ ์ธ์‹, ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฐ€์ƒ ์ปดํ“จํ„ฐ์ด๋‹ค.

 

 

 

 

 

 


๊ทธ๋ฆฌ๊ณ  ๋ฉ”๋ชจ๋ฆฌ ์ข…๋ฅ˜ ์ค‘ ํ•˜๋‚˜์ธ ํž™์ด ์žˆ๋‹ค. 

 

 

ํž™์ด๋ž€?

๋™์ ์œผ๋กœ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

์ฃผ๋กœ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์— ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ๋ฐ์ดํ„ฐ๋‚˜ ๊ฐ์ฒด๋“ค์ด ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„์ด๋‹ค.

ํž™์€ ๋ณ€์ˆ˜๋กœ ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ณ , ์ฃผ์†Œ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋Š” ํž™ ๋‚ด๋ถ€์—์„œ์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์™€ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ๊ฐ€ ๋™์ ์œผ๋กœ ๋ณ€ํ™”ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 

(C++์„ ๋ณด์ž๋ฉด)

C++์—์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์ž˜ ๋ชปํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ๋„ ํ–ˆ๋‹ค.

์™œ๋ƒ๋ฉด C++์—์„œ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ณ  ํ•ด์ œํ•ด์•ผ ํ•œ๋‹ค.

์ด ๊ณผ์ •์—์„œ ์‹ค์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

int* dynamicInt = new int; // ๋™์ ์œผ๋กœ int ํ˜• ๋ณ€์ˆ˜ ํ• ๋‹น
// ...
delete dynamicInt; // ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ

์ด๋ ‡๊ฒŒ ์ง์ ‘ ํ•ด์ œ๋ฅผ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

 

 

 

 

ํ•˜์ง€๋งŒ ์ž๋ฐ”๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์ž์ฒด๋กœ ์ฒ˜๋ฆฌ/ํ•ด์ œ๋ฅผ ํ•ด์ค€๋‹ค.

JVM์ด ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์ด๋ผ๋Š” ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋“ค์„ ๊ฐ์ง€ํ•˜๊ณ  ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•œ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด JVM์— ์˜ํ•ด ์•Œ์•„์„œ ํ•ด์ œ๋œ๋‹ค.

์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€๋น„์ง€์ปฌ๋ ‰์…˜(GC, ์“ฐ๋ ˆ๊ธฐ ์ˆ˜์ง‘)์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

 

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ (Garbage Collection)

์ž๋ฐ”์˜ GC๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋“ค์„ ํŒ๋ณ„ํ•˜๊ณ  ํ•ด๋‹น ๊ฐ์ฒด๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ํ•ด์ œํ•ด์ค€๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์— ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋œ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

 

(์ž๋ฐ”์—์„œ ๊ฐ์ฒด์˜ ์ฐธ์กฐ๊ฐ’์˜ ํฌ๊ธฐ๋Š” 4๋ฐ”์ดํŠธ ๋˜๋Š” 8๋ฐ”์ดํŠธ์ด๋‹ค.)

 

 

 

 

 

โ—๋งˆ๋ฌด๋ฆฌโ—

์ž๋ฐ”๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์ž๋™ํ™”ํ•˜๊ณ , ๊ฐ์ฒด์—๋Š” ์ง์ ‘์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ฐธ์กฐ๊ฐ’์„ ํ†ตํ•ด ์ ‘๊ทผํ•œ๋‹ค.

์ด๋กœ์จ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๋“ฑ์˜ ๋ฌธ์ œ๋ฅผ ์ค„์ด๊ณ  ์•ˆ์ •์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

 

 

 

 

 

https://doozi0316.tistory.com/entry/1%EC%A3%BC%EC%B0%A8-JVM%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EB%A9%B0-%EC%9E%90%EB%B0%94-%EC%BD%94%EB%93%9C%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%8B%A4%ED%96%89%ED%95%98%EB%8A%94-%EA%B2%83%EC%9D%B8%EA%B0%80

 

[JAVA] JVM์ด๋ž€? ๊ฐœ๋… ๋ฐ ๊ตฌ์กฐ (JDK, JRE, JIT, ๊ฐ€๋น„์ง€ ์ฝœ๋ ‰ํ„ฐ...)

JVM์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€ Java Virtual Machine์˜ ์ค„์ž„๋ง. ์ง์—ญํ•˜๋ฉด '์ž๋ฐ”๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์ƒ ๊ธฐ๊ณ„(์ปดํ“จํ„ฐ)'๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. Java ๋Š” OS์— ์ข…์†์ ์ด์ง€ ์•Š๋‹ค๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. OS์— ์ข…์†๋ฐ›์ง€ ์•Š๊ณ  ์‹คํ–‰๋˜

doozi0316.tistory.com

 

๋ฐ˜์‘ํ˜•