JVM์ด๋?
โ๊ถ๊ธ์ฆโ
์ต๊ทผ ๋ฉด์ ์ ๋ณด๊ฒ๋๋๋ฐ ๋ค๋๋ค ๋ฉด์ ์ผ๋ก ์งํ๋์๋ค.
๊ฐ๋ ์ ๋์ง๊ณ ์ค๋ช ํ ์ ์๋ ์ฌ๋์ ์์ ๋ค์ด์ ์ค๋ช ์ ํ๋ ๊ฒ์ด์๋ค.
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๋ฐ์ดํธ์ด๋ค.)
โ๋ง๋ฌด๋ฆฌโ
์๋ฐ๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ํตํด ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์๋ํํ๊ณ , ๊ฐ์ฒด์๋ ์ง์ ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ก ์ ๊ทผํ๋ ๊ฒ์ด ์๋๋ผ ์ฐธ์กฐ๊ฐ์ ํตํด ์ ๊ทผํ๋ค.
์ด๋ก์จ ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฑ์ ๋ฌธ์ ๋ฅผ ์ค์ด๊ณ ์์ ์ ์ธ ํ๋ก๊ทธ๋๋ฐ์ ํ ์ ์๋ค.
[JAVA] JVM์ด๋? ๊ฐ๋ ๋ฐ ๊ตฌ์กฐ (JDK, JRE, JIT, ๊ฐ๋น์ง ์ฝ๋ ํฐ...)
JVM์ด๋ ๋ฌด์์ธ๊ฐ Java Virtual Machine์ ์ค์๋ง. ์ง์ญํ๋ฉด '์๋ฐ๋ฅผ ์คํํ๊ธฐ ์ํ ๊ฐ์ ๊ธฐ๊ณ(์ปดํจํฐ)'๋ผ๊ณ ํ ์ ์๋ค. Java ๋ OS์ ์ข ์์ ์ด์ง ์๋ค๋ ํน์ง์ ๊ฐ์ง๊ณ ์๋ค. OS์ ์ข ์๋ฐ์ง ์๊ณ ์คํ๋
doozi0316.tistory.com