์๋ฐ ๊ฐ์ ๋จธ์ (JVM) ์ํคํ ์ฒ ์ดํด
JVM(Java Virtual Machine) ์ํคํ ์ฒ๋ฅผ ํ์ํ๊ณ ํด๋น ๊ตฌ์ฑ ์์๋ฅผ ์ดํดํ๋ฉฐ Java ์ ํ๋ฆฌ์ผ์ด์ ์ ํจ์จ์ ์ผ๋ก ์คํํ๊ธฐ ์ํด ํจ๊ป ์๋ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.

JVM(Java Virtual Machine)์ Java ๋ฐ์ดํธ์ฝ๋ ํ๋ก๊ทธ๋จ ์คํ์ ๋ด๋นํ๋ Java ๋ฐํ์ ํ๊ฒฝ์ ์ค์ํ ๊ตฌ์ฑ ์์์ ๋๋ค. JVM์ ์ฃผ์ ์ด์ ์ธ ๋ค์ํ ํ๋์จ์ด ์ํคํ ์ฒ ๋ฐ ์ด์ ์ฒด์ ์์ Java ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ํํ๊ฒ ์คํ๋ ์ ์๋๋ก ์ผ๊ด๋ ํ๋ซํผ ๋ ๋ฆฝ์ ์ธ ์ํํธ์จ์ด ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค.
Java ์ ํ๋ฆฌ์ผ์ด์ ์ ์ผ๋ฐ์ ์ผ๋ก Java ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์์ฑ๋๊ณ ๋ฐ์ดํธ์ฝ๋ ํ์(*.class ํ์ผ)์ผ๋ก ์ปดํ์ผ๋ ๋ค์ JVM์์ ๋ก๋ ๋ฐ ์คํ๋ฉ๋๋ค. JVM์ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ๊ธฐ๋ณธ ์ด์ ์ฒด์ ๋ฐ ํ๋์จ์ด์ ๊ณ ์ ํ ๊ธฐ๋ณธ ๊ธฐ๊ณ ์ฝ๋๋ก ๋ณํํ๋ฏ๋ก Java ์์ฉ ํ๋ก๊ทธ๋จ์ด ์์ ์์ด ์ฌ๋ฌ ํ๋ซํผ์์ ์คํ๋ ์ ์์ต๋๋ค. ์ด ํ๋ก์ธ์ค๋ ์ข ์ข "Write Once, Run Anywhere" ์์น์ด๋ผ๊ณ ํฉ๋๋ค.
๋ํ JVM์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ, ๊ฐ๋น์ง ์์ง ๋ฐ ๋ฐํ์ ์ต์ ํ๋ฅผ ์ฒ๋ฆฌํ์ฌ Java ํ๋ก๊ทธ๋จ์ ํจ์จ์ ์ธ ์คํ์ ์ํ ํ์ ๊ตฌ์ฑ ์์์ ๋๋ค.
JVM ๊ตฌ์ฑ ์์ ๋ฐ ํด๋น ๊ธฐ๋ฅ
JVM ์ํคํ ์ฒ๋ ํจ๊ป ์๋ํ์ฌ Java ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํ๋ ์ฌ๋ฌ ๊ตฌ์ฑ ์์๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ด๋ฌํ ๊ตฌ์ฑ ์์์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค.
- Classloader: Classloader๋ ๋์คํฌ์์ JVM ๋ฉ๋ชจ๋ฆฌ๋ก Java ํด๋์ค๋ฅผ ๋ก๋ํ๊ณ , ํด๋์ค ์ข ์์ฑ์ ํด๊ฒฐํ๊ณ , ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ๋์ ํด๋์ค๋ฅผ ์ด๊ธฐํํ๋ ์ญํ ์ ํฉ๋๋ค. Classloader๋ Bootstrap Classloader์์ ์์ํ์ฌ Extension Classloader ๋ฐ Application Classloader๊ฐ ์ด์ด์ง๋ ์์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฆ ๋๋ค.
- ๋ฐํ์ ๋ฐ์ดํฐ ์์ญ: JVM์ ํ๋ก๊ทธ๋จ ์คํ ์ค์ ๋ฐํ์ ๋ฐ์ดํฐ ์์ญ์ด๋ผ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํฉ๋๋ค. ์ด๋ฌํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์๋ ์์ฉ ํ๋ก๊ทธ๋จ ์๋ช ์ฃผ๊ธฐ์ ๋ค์ํ ์ธก๋ฉด์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ํ, ์คํ, ๋ฉ์๋ ์์ญ, ์์ ํ ๋ฐ PC ๋ ์ง์คํฐ๊ฐ ํฌํจ๋ฉ๋๋ค.
- ์คํ ์์ง: ์คํ ์์ง์ Java ๋ฐ์ดํธ์ฝ๋ ์คํ์ ๋ด๋นํ๋ ํต์ฌ ๊ตฌ์ฑ ์์์ ๋๋ค. ์คํ ์์ง์ ๋ฐ์ดํธ์ฝ๋๋ฅผ ํด์ํ๊ณ ๋ฐํ์ ์ค์ ๋ค์ดํฐ๋ธ ๋จธ์ ์ฝ๋๋ก ๋ณํํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ธํฐํ๋ฆฌํฐ, JIT(Just-In-Time) ์ปดํ์ผ๋ฌ ๋ฐ ๊ฐ๋น์ง ์์ง๊ธฐ์ ๊ฐ์ ๊ตฌ์ฑ ์์๊ฐ ํฌํจ๋ฉ๋๋ค.
๋ค์ ์น์ ์์๋ JVM ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ์ธ๋ถ ์ฌํญ๊ณผ JVM ์ํคํ ์ฒ๋ฅผ ๊ตฌ์ฑํ๋ ๋ค์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ํด ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
JVM ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
ํจ๊ณผ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ Java ์ ํ๋ฆฌ์ผ์ด์ ์ ํจ์จ์ ์ธ ์คํ์ ๊ธฐ์ฌํ๋ JVM ์ํคํ ์ฒ์ ํ์ ์์์ ๋๋ค. JVM์ ํ๋ก๊ทธ๋จ ์คํ ์ค ๋ค์ํ ์ ํ์ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ์กฐ์์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ฐํ์ ๋ฐ์ดํฐ ์์ญ์ด๋ผ๋ ๋ค์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํฉ๋๋ค. JVM์ ์ฃผ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํ: ํ์ JVM์์ ๊ฐ์ฅ ํฐ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ฉฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ์ค๋ ๋ ๊ฐ์ ๊ณต์ ๋ฉ๋๋ค. ํ๋ก๊ทธ๋จ ์คํ ์ค์ ์์ฑ๋ ์ธ์คํด์คํ๋ ๊ฐ์ฒด ๋ฐ ๋ฐฐ์ด์ ์ ์ฅํฉ๋๋ค. ํ์ '์ ์ ์ธ๋'์ '๊ตฌ์ธ๋' ์์ญ์ผ๋ก ๋ ๋๋ฉ๋๋ค. Young Generation ์์ญ์ ์๋ก ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋ ๋ฐ๋ฉด Old Generation ์์ญ์ ์ฌ๋ฌ ๊ฐ๋น์ง ์์ง ์ฃผ๊ธฐ์์ ์ด์๋จ์ ๊ฐ์ฒด๋ฅผ ํฌํจํฉ๋๋ค.
- ์คํ: JVM์ ๊ฐ ์ค๋ ๋์ ๋ํด ๋ณ๋์ ์คํ์ ์์ฑํฉ๋๋ค. ์คํ์ ํ๋ก๊ทธ๋จ ์คํ ์ค ๋ฉ์๋ ํธ์ถ ์ ๋ณด, ์ง์ญ ๋ณ์ ๋ฐ ์ค๊ฐ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํฉ๋๋ค. ์คํ์ ๊ฐ ํญ๋ชฉ์ ์คํ ํ๋ ์์ด๋ผ๊ณ ํ๋ฉฐ JVM์ ๊ฐ ๋ฉ์๋ ํธ์ถ์ ๋ํด ๋ ๋ฆฝ์ ์ผ๋ก ์คํ ํ๋ ์์ ๊ด๋ฆฌํฉ๋๋ค.
- ๋ฉ์๋ ์์ญ: ๋ฉ์๋ ์์ญ์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ชจ๋ ์ค๋ ๋ ๊ฐ์ ๊ณต์ ๋๋ฉฐ ๋ฉ์๋ ์ด๋ฆ, ๋ณ์ ์ด๋ฆ ๋ฐ ์์ ๊ฐ๊ณผ ๊ฐ์ ํด๋์ค ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค. ๋ฉ์๋ ์์ญ์๋ ๋ฐ์ดํธ ์ฝ๋์์ ์ฌ์ฉ๋๋ ์์ ๊ฐ๊ณผ ๊ธฐํธ ์ฐธ์กฐ๋ฅผ ๋ณด์ ํ๋ ์์ ํ๋ ํฌํจ๋์ด ์์ต๋๋ค.
- PC ๋ ์ง์คํฐ: PC(ํ๋ก๊ทธ๋จ ์นด์ดํฐ) ๋ ์ง์คํฐ๋ ๊ฐ ์ค๋ ๋์ ๋ํด ํ์ฌ ์คํ ์ค์ธ JVM ๋ช ๋ น์ ์ฃผ์๋ฅผ ํฌํจํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋๋ค. PC ๋ ์ง์คํฐ๋ JVM์ด ๋ค์์ ์คํํ ๋ช ๋ น์ ์ถ์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์ด๋ฌํ ๋ฉ๋ชจ๋ฆฌ ์์ญ ์ธ์๋ JVM์ ๋ ์ด์ ํ์ํ์ง ์์ ๊ฐ์ฒด์ ๋ํ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์๋์ผ๋ก ํด์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์ค์ด๊ณ ๋ฆฌ์์ค ์ฌ์ฉ์ ์ต์ ํํ๋ ๊ฐ๋น์ง ์์ง๊ธฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์์ฝํ๋ฉด JVM ์ํคํ ์ฒ์๋ Java ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํ์ ์ต์ ํํ๊ณ ํจ์จ์ ์ธ ๋ฆฌ์์ค ์ฌ์ฉ์ ๋ณด์ฅํ๋ ์ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์์คํ ์ด ์์ต๋๋ค. JVM์ ๊ตฌ์ฑ ์์์ ํด๋น ๊ธฐ๋ฅ์ ์ดํดํ๋ฉด ๊ฐ๋ฐ์๊ฐ ๊ฐ๋ฅํ ์ต์์ ์ฑ๋ฅ์ ์ํด Java ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ง๋ค๊ณ ์ต์ ํํ ์ ์์ต๋๋ค.
JVM ํด๋์ค๋ก๋
Classloader๋ Java ํด๋์ค๋ฅผ JVM ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํ๋ JVM(Java Virtual Machine)์ ์ค์ํ ๊ตฌ์ฑ ์์์ ๋๋ค. ๋ก๋, ์ฐ๊ฒฐ ๋ฐ ์ด๊ธฐํ์ ์ธ ๊ฐ์ง ์ค์ํ ํ๋์ ๋ด๋นํฉ๋๋ค. ์ด๋ฌํ ํ๋์ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ก๋ ์ค
๋ก๋๋ ๋์คํฌ์์ ํด๋์ค ํ์ผ์ ๊ฐ์ ธ์์ JVM ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํ๋ ํ๋ก์ธ์ค์ ๋๋ค. Classloader๋ ํจํค์ง ์ด๋ฆ๊ณผ ํด๋์ค ์ด๋ฆ์ ํฌํจํ๋ ์ ๊ทํ๋ ํด๋์ค ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ํ์ํ ํด๋์ค ํ์ผ์ ์ฐพ์ต๋๋ค. JVM์๋ ์ธ ๊ฐ์ง ์ ํ์ ํด๋์ค ๋ก๋๊ฐ ์์ต๋๋ค.
- Bootstrap Classloader: ์ด๊ฒ์ JVM์ ๋ด์ฅ Classloader์ด๋ฉฐ
rt.jarํ์ผ์์java.lang.Object๋ฐ ๊ธฐํ ๋ฐํ์ ํด๋์ค์ ๊ฐ์ ํต์ฌ Java ํด๋์ค๋ฅผ ๋ก๋ํฉ๋๋ค. - Extension Classloader: ์ด Classloader๋ ์ถ๊ฐ Java ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ํ๋ ์์ํฌ๊ฐ ํฌํจ๋ JDK์
ext๋๋ ํ ๋ฆฌ์์ ํด๋์ค๋ฅผ ๋ก๋ํฉ๋๋ค. - ์์คํ
/์ ํ๋ฆฌ์ผ์ด์
ํด๋์ค ๋ก๋: ๊ธฐ๋ณธ ํด๋์ค ๋ก๋๋ ์ ํ๋ฆฌ์ผ์ด์
์ ํด๋์ค ๊ฒฝ๋ก์์ ํด๋์ค๋ฅผ ๋ก๋ํฉ๋๋ค. ํด๋์ค ๊ฒฝ๋ก๋ Java ์ ํ๋ฆฌ์ผ์ด์
์ ์คํํ ๋
-cp๋๋-classpath์ต์ ์ ์ฌ์ฉํ์ฌ ์ง์ ํ ์ ์์ต๋๋ค.
Classloader๋ Bootstrap Classloader์์ ์์ํ์ฌ Extension ๋ฐ System/Application Classloader๋ก ๋ด๋ ค๊ฐ๋ ์์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฆ ๋๋ค.

์ด๋ฏธ์ง ์ถ์ฒ: ์๋ฐ ํํ ๋ฆฌ์ผ ๋คํธ์ํฌ
์ฐ๊ฒฐ
์ฐ๊ฒฐ ํ๋ก์ธ์ค๋ ํด๋์ค ์ฐ๊ฒฐ์ ์ค์ ํ๊ณ ๋ถ์ผ์น ๋๋ ์ค๋ฅ๋ฅผ ํ์ธํฉ๋๋ค. ์ฐ๊ฒฐ์ ์ธ ๋จ๊ณ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- ํ์ธ: ์ด ๋จ๊ณ์์ JVM์ ๋ก๋๋ ํด๋์ค ํ์ผ์ด Java ์ธ์ด ์ฌ์์ ์ง์ ๋ ๊ตฌ์กฐ ๋ฐ ์ ์ฝ ์กฐ๊ฑด์ ์ค์ํ๋์ง ํ์ธํฉ๋๋ค. ํ์์ด ์๋ชป๋์๊ฑฐ๋ ์ ์์ ์ธ ํด๋์ค ํ์ผ์ ์ด ๋จ๊ณ์์ ๊ฑฐ๋ถ๋ฉ๋๋ค.
- ์ค๋น: JVM์ ํด๋์ค ์คํ์ ํ์ํ ์ ์ ํ๋, ๋ฉ์๋ ๋ฐ ๊ธฐํ ๋ฆฌ์์ค๋ฅผ ์ด๊ธฐํํฉ๋๋ค. ์ ์ ํ๋์ ๊ธฐ๋ณธ๊ฐ์ ํ ๋นํ๊ณ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํฉ๋๋ค.
- ํด๊ฒฐ ๋ฐฉ๋ฒ: ์ด ๋จ๊ณ๋ ๋ฉ์๋ ์ฃผ์ ๋ฐ ํ๋ ์คํ์ ๊ณผ ๊ฐ์ ์ง์ ์ฐธ์กฐ๋ก ๋์ฒดํ์ฌ ํด๋์ค ํ์ผ์ ๊ธฐํธ ์ฐธ์กฐ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ์ด ํ๋ก์ธ์ค๋ ๋ฐํ์์ ๋์ ์ผ๋ก ์ํ๋ฉ๋๋ค.
์ด๊ธฐํ
์ด๊ธฐํ๋ Classloader ํ๋ก์ธ์ค์ ๋ง์ง๋ง ๋จ๊ณ์ ๋๋ค. ์ด ๋จ๊ณ์์ JVM์ ํด๋์ค์ ๋ชจ๋ ์ ์ ์ฝ๋ ๋ธ๋ก์ ์คํํ๊ณ ํด๋์ค ํ์ผ์ ์ง์ ๋ ์ด๊ธฐ ๊ฐ์ ์ ์ ํ๋์ ํ ๋นํฉ๋๋ค. ๋ํ ๋ค์ค ์ค๋ ๋ ํ๊ฒฝ์์๋ ์ ์ ์ด๊ธฐํ๊ฐ ํ ๋ฒ๋ง ๋ฐ์ํ๋๋ก ํฉ๋๋ค.
JIT ์ปดํ์ผ๋ฌ ๋ฐ ๊ฐ๋น์ง ์์ง๊ธฐ
JIT(Just-In-Time) ์ปดํ์ผ๋ฌ ๋ฐ ๊ฐ๋น์ง ์์ง๊ธฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ํฌ๊ฒ ์ต์ ํํ๊ณ ์์คํ ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํ๋ ํ์ JVM ๊ตฌ์ฑ ์์์ ๋๋ค.
JIT ์ปดํ์ผ๋ฌ
JIT(Just-In-Time) ์ปดํ์ผ๋ฌ๋ ๋ฐํ์์ Java ๋ฐ์ดํธ์ฝ๋๋ฅผ ๊ธฐ๋ณธ ๊ธฐ๊ณ ์ฝ๋๋ก ๋ณํํ๋ ์ญํ ์ ํฉ๋๋ค. ์ด ํ๋ก์ธ์ค๋ Java ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํ ์๋๋ฅผ ์ต์ ํํฉ๋๋ค. JIT ์ปดํ์ผ๋ฌ๋ ์์ฃผ ํธ์ถ๋๋ ๋ฉ์๋๋ฅผ ์ปดํ์ผํ๊ณ , ์ปดํ์ผ๋ ์ฝ๋๋ฅผ ์บ์ํ๊ณ , ํฅํ ์คํ์์ ์ฌ์ฌ์ฉํ์ฌ ๋ฐ๋ณต์ ์ผ๋ก ๋ฐ์ดํธ์ฝ๋๋ฅผ ํด์ํ๋ ์ค๋ฒํค๋๋ฅผ ์ค์ ๋๋ค.
JVM์ "ํซ์คํ ๊ฐ์ง" ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ์์ฃผ ํธ์ถ๋๋ ๋ฐฉ๋ฒ์ ์๋ณํฉ๋๋ค. ํซ์คํ ์๊ณ๊ฐ์ ๋๋ฌํ๋ฉด JIT ์ปดํ์ผ๋ฌ๊ฐ ์์๋์ด ๋ฐ์ดํธ์ฝ๋๋ฅผ ๋ค์ดํฐ๋ธ ๋จธ์ ์ฝ๋๋ก ์ปดํ์ผํฉ๋๋ค. CPU๋ ์ด ์ปดํ์ผ๋ ์ฝ๋๋ฅผ ์ง์ ์คํํ๋ฏ๋ก ์คํ ์๊ฐ์ด ํจ์ฌ ๋นจ๋ผ์ง๋๋ค.
๊ฐ๋น์ง ์ปฌ๋ ํฐ
GC(๊ฐ๋น์ง ์์ง๊ธฐ)๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์๋ํ๋ฅผ ๋ด๋นํ๋ ํ์ JVM ๊ตฌ์ฑ ์์์ ๋๋ค. ์์ฉ ํ๋ก๊ทธ๋จ์ด ๋ ์ด์ ํ์๋ก ํ์ง ์๊ฑฐ๋ ์ฐธ์กฐํ์ง ์๋ ๊ฐ์ฒด์์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ํด์ ํฉ๋๋ค. ์ด ํ๋ก์ธ์ค๋ Java ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์ต์ํํ๊ณ ๋ฆฌ์์ค ํ์ฉ์ ์ต์ ํํฉ๋๋ค. JVM์ ์ธ๋๋ณ ๊ฐ๋น์ง ์์ง ์ ๋ต์ ์ฌ์ฉํ์ฌ ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ Young ๋ฐ Old Generation์ผ๋ก ๋๋๋๋ค. Young Generation์ ๋ค์ Eden Space, Survivor Space 0(S0), Survivor Space 1(S1)์ผ๋ก ์ธ๋ถํ๋ฉ๋๋ค.
์ธ๋๋ณ ๊ฐ๋น์ง ์์ง์ ๊ธฐ๋ณธ ์์ด๋์ด๋ ๋๋ถ๋ถ์ ๊ฐ์ฒด๊ฐ ์๋ช ์ด ์งง๊ณ ์์ฑ ์งํ ๊ฐ๋น์ง ์์ง๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ Young Generation์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์ฃผ ํ ๋น ๋ฐ ํ ๋น ํด์ ํ๋ฉด ๊ฐ๋น์ง ์์ง ํ๋ก์ธ์ค๊ฐ ์ต์ ํ๋ฉ๋๋ค. Garbage Collector๋ Mark-Sweep-Compact, Copying ๋ฐ Generational Collection๊ณผ ๊ฐ์ ๋ค์ํ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ํ ๋ฉ๋ชจ๋ฆฌ์์ ์ฌ์ฉ๋์ง ์๋ ๊ฐ์ฒด๋ฅผ ์ ๋ฆฌํฉ๋๋ค.
JVM ๋ฐํ์ ๋ฐ์ดํฐ ์์ญ
JVM ๋ฐํ์ ๋ฐ์ดํฐ ์์ญ์ ํ๋ก๊ทธ๋จ ์คํ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด JVM์์ ํ ๋นํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋๋ค. ์ด๋ฌํ ๋ฐ์ดํฐ ์์ญ์ ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํ๊ณ Java ์์ฉ ํ๋ก๊ทธ๋จ์ ํจ์จ์ ์ธ ์คํ์ ์ด์งํ๋ ๋ฐ ํ์์ ์ ๋๋ค. JVM์ ์ฃผ์ ๋ฐํ์ ๋ฐ์ดํฐ ์์ญ์๋ ํ, ์คํ, ๋ฉ์๋ ์์ญ, ์์ ํ ๋ฐ PC ๋ ์ง์คํฐ๊ฐ ํฌํจ๋ฉ๋๋ค.
๋๋ฏธ
ํ์ ๊ฐ์ฒด ๋ฐ ์ธ์คํด์ค ๋ณ์๋ฅผ ์ ์ฅํ๋ JVM์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋๋ค. ๊ฐ์ฅ ํฐ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ฉฐ ๊ฐ๋น์ง ์์ง๊ธฐ ์น์ ์์ ์ค๋ช ํ ๊ฒ์ฒ๋ผ ํจ์จ์ ์ธ ๊ฐ๋น์ง ์์ง์ ์ํด ์ธ๋๋ก ๋๋ฉ๋๋ค. ํ์ ๊ฐ์ฒด๋ ์ ์ญ์ ์ผ๋ก ์ก์ธ์คํ ์ ์์ผ๋ฏ๋ก ๋ค์ค ์ค๋ ๋ ์์ฉ ํ๋ก๊ทธ๋จ์์ ๋ฐ์ดํฐ ๋ถ์ผ์น ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด ์ค๋ ๋ ๋๊ธฐํ ๋ฉ์ปค๋์ฆ์ด ํ์ํฉ๋๋ค.
์คํ
์คํ์ ์ง์ญ ๋ณ์์ ๋ฉ์๋ ํธ์ถ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋๋ค. JVM์ ๊ฐ ์ฐ๋ ๋๋ ์์ ๋ง์ ์คํ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ์คํ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ ํด๋น ์ฐ๋ ๋์ ๋ฒ์ ๋ด์์๋ง ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์คํ ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค์ ์ค๋ ๋ ๋๊ธฐํ๊ฐ ํ์ํ์ง ์์ต๋๋ค. ์คํ์ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ๊ฒ์์ ์ํ LIFO(ํ์ ์ ์ถ) ๋ฐฉ๋ฒ์ ์ฉ์ดํ๊ฒ ํ์ฌ ๋ฉ์๋ ํธ์ถ ์คํ์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํฉ๋๋ค.
๋ฐฉ๋ฒ ์์ญ
๋ฉ์๋ ์์ญ์ ๋ก๋๋ ๊ฐ ํด๋์ค์ ๋ํ ๋ฉํ๋ฐ์ดํฐ, ์์ ํ ์ ๋ณด ๋ฐ ์ ์ ํ๋๋ฅผ ์ ์ฅํ๋ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋๋ค. ์ด ์์ญ์ ํด๋์ค ๊ด๋ จ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๊ณ ๋์ ์ฐ๊ฒฐ ๋ฐ ๋ฐ์ดํธ ์ฝ๋ ์คํ์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
์์ ํ
์์ ํ์ Java ๋ฐ์ดํธ ์ฝ๋์์ ์ฐธ์กฐํ๋ ๋ฌธ์์ด ๋ฆฌํฐ๋ด, ํด๋์ค ์ด๋ฆ ๋ฐ ๋ฉ์๋ ์ด๋ฆ๊ณผ ๊ฐ์ ์์๋ฅผ ์ ์ฅํ๋ ๋ฉ์๋ ์์ญ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋๋ค. ๋ชจ๋ ์์ ๊ฐ์ ๋ํ ์ค์ ์ ์ฅ์ ์ญํ ์ ํ๋ฉฐ ์ฐ๊ฒฐ โโํ๋ก์ธ์ค ์ค์ ๊ธฐํธ ์ฐธ์กฐ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
PC ๋ ์ง์คํฐ
ํ๋ก๊ทธ๋จ ์นด์ดํฐ(PC) ๋ ์ง์คํฐ๋ ๊ฐ ์ค๋ ๋์ ๋ํด ํ์ฌ ์คํ ์ค์ธ Java ๋ฐ์ดํธ์ฝ๋ ๋ช ๋ น์ ์ฃผ์๋ฅผ ์ ์ฅํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋๋ค. PC ๋ ์ง์คํฐ๋ ์ค๋ ๋ ์คํ์ ๊ด๋ฆฌํ๊ณ JVM์์ ๋ช ๋ น ์คํ ์ํ์ค๋ฅผ ์ ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ฌ๊ธฐ์๋ ์คํํ ๋ค์ ๋ฐ์ดํธ์ฝ๋ ๋ช ๋ น์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ํฌํจ๋์ด ์์ผ๋ฉฐ JVM์ด Java ๋ฐ์ดํธ์ฝ๋ ๋ช ๋ น์ ์ฒ๋ฆฌํจ์ ๋ฐ๋ผ ํด๋น ๊ฐ์ด ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
JVM ์ํคํ ์ฒ์ ์ด์ ๋ฐ ์ ํ ์ฌํญ
JVM(Java Virtual Machine) ์ํคํ ์ฒ๋ ๋ค์ํ ์ด์ ์ ์ ๊ณตํ๋ฏ๋ก ๊ฐ๋ฐ์์๊ฒ ๋๋ฆฌ ์ ํ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ํ๊ณ๊ฐ ์๋ ์์คํ ์ ์์ต๋๋ค. ์ด ์น์ ์์๋ JVM ์ํคํ ์ฒ์ ์ด์ ๊ณผ ๋จ์ ์ ๋ํ ๊ฐ์๋ฅผ ์ ๊ณตํฉ๋๋ค.
JVM ์ํคํ ์ฒ์ ์ด์
- ํ๋ซํผ ๋ ๋ฆฝ์ฑ: JVM์ ๊ฐ์ฅ ์ค์ํ ์ฅ์ ์ค ํ๋๋ ํ๋ซํผ ๋ ๋ฆฝ์ฑ์ ๋๋ค. JVM ๋๋ถ์ Java ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๋ ์์ ์์ด ๋ค์ํ ํ๋ซํผ์์ ์คํํ ์ ์์ต๋๋ค. JVM์ Java ๋ฐ์ดํธ์ฝ๋๋ฅผ ๊ธฐ๋ณธ ํ๋ซํผ์ ํน์ ํ ๊ธฐ๋ณธ ๊ธฐ๊ณ ์ฝ๋๋ก ๋ณํํ์ฌ ๋ค์ํ ํ๋์จ์ด ๋ฐ ์ด์ ์ฒด์ ์์ ์ํํ ์คํ์ ๋ณด์ฅํฉ๋๋ค.
- ํ์ฅ์ฑ: JVM์ ๋ฉํฐ์ค๋ ๋ฉ ๊ธฐ๋ฅ๊ณผ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ๋ฅ ๋๋ถ์ ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ด๋ฌํ ํน์ฑ์ ํตํด ๊ฐ๋ฐ์๋ ์ฑ๋ฅ ์ ํ ์์ด ๋ง์ ์ฌ์ฉ์์๊ฒ ์๋น์ค๋ฅผ ์ ๊ณตํ ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ณ ์ ์งํ ์ ์์ต๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ: JVM์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์์คํ ์ ์์คํ ์์์ ์ต์ ํ์ฉ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์๋ก ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์์ญ(Heap, Stack, Method Area ๋ฐ PC Register)์ ํตํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๊ณ ๋ ์ด์ ํ์ํ์ง ์์ ๊ฐ์ฒด๊ฐ ์ฐจ์งํ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋์ผ๋ก ํ์ํ๋ ๊ฐ๋น์ง ์์ง ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์ค์ด๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
- ์ต์ ํ๋ ๋ฐ์ดํธ์ฝ๋ ์คํ: JVM์ JIT(Just-In-Time) ์ปดํ์ผ์ ์ฌ์ฉํ์ฌ Java ๋ฐ์ดํธ์ฝ๋ ์คํ์ ์ต์ ํํฉ๋๋ค. JIT ์ปดํ์ผ๋ฌ๋ ๋ฐํ์ ์ค์ ๋ฐ์ดํธ์ฝ๋๋ฅผ ์์ ๊ธฐ๊ณ ์ฝ๋๋ก ๋ณํํ์ฌ ์์ฃผ ํธ์ถ๋๋ ๋ฉ์๋๋ฅผ ์ปดํ์ผํ๊ณ ๋์ค์ ์ฌ์ฉํ ์ ์๋๋ก ์ปดํ์ผ๋ ์ฝ๋๋ฅผ ์บ์ฑํ์ฌ Java ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ฒด ์คํ ์๋๋ฅผ ํฅ์์ํต๋๋ค.
- ๊ฐ๋น์ง ์ปฌ๋ ์ : JVM์ ์๋ํ๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ฌ์ฉํ์ง ์๋ ๊ฐ์ฒด๊ฐ ์ฐจ์งํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋น ํด์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํฉ๋๋ค. ๊ฐ๋น์ง ์์ง์ Java ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ํฅ์์ํค๊ณ ๊ฐ๋ฐ์๋ฅผ ์ํ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์์ ์ ๋จ์ํํฉ๋๋ค.
JVM ์ํคํ ์ฒ์ ํ๊ณ
- ์ฑ๋ฅ ์ค๋ฒํค๋: JVM์ ํด์ ๋ฐ ์ปดํ์ผ ํ๋ก์ธ์ค๋ก ์ธํด ์ฝ๊ฐ์ ์ฑ๋ฅ ์ค๋ฒํค๋๋ฅผ ๋ฐ์์ํต๋๋ค. ๋ฐ์ดํธ์ฝ๋๋ฅผ ํด์ํ๊ณ ๋ฐํ์ ์ค์ ๋ค์ดํฐ๋ธ ๋จธ์ ์ฝ๋๋ก ๋ณํํ๋ฉด ๋จธ์ ์ฝ๋๋ก ์ง์ ์ปดํ์ผ๋๋ ์ธ์ด๋ก ์์ฑ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ณด๋ค ์คํ ์๋๊ฐ ๋๋ ค์ง ์ ์์ต๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋: ํด๋์ค ๋ก๋, ์คํ ์์ง ๋ฐ ๋ฐํ์ ๋ฐ์ดํฐ ์์ญ๊ณผ ๊ฐ์ JVM์ ๋ค์ํ ๊ตฌ์ฑ ์์๋ ์์คํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ ๊ฒ ์ฆ๊ฐ๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๋ฆฌ์์ค๊ฐ ์ ํ๋ ์ฅ์น์์ ์คํ๋๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ํฅ์ ๋ฏธ์ณ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค.
- ๊ฐ๋น์ง ์์ง ๋ธ๊พน์ง: JVM์ ๊ฐ๋น์ง ์์ง ๊ธฐ๋ฅ์ ๋ง์ ์ด์ ์ ์ ๊ณตํ์ง๋ง ์ฌ๋ฐ๋ฅด๊ฒ ์ต์ ํ๋์ง ์์ ๊ฒฝ์ฐ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๊ฐ๋น์ง ์์ง๊ธฐ๋ ์ ์ฒด ๊ฐ๋น์ง ์์ง ์ฃผ๊ธฐ๋ฅผ ์ํํ๊ธฐ ์ํด ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ ์ผ์ ์ค์งํ ์ ์์ต๋๋ค. ์ด๋ฅผ "stop-the-world" ์ผ์ ์ค์ง๋ผ๊ณ ํฉ๋๋ค. ์ด๋ฌํ ์ผ์ ์ค์ง๋ ํนํ ์ฒ๋ฆฌ๋์ด ๋ง์ ์๋๋ฆฌ์ค์์ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ์๋นํ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
JVM ๋ฐ AppMaster.io : No-code ๊ฐ๋ฐ ํฅ์
AppMaster.io๋ ๋ฐฑ์๋, ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ํ๊ฒ ์์ฑํ๋๋ก ์ค๊ณ๋ ๊ฐ๋ ฅํ ์ฝ๋ ์๋ ํ๋ซํผ์ ๋๋ค. ์ด ํ๋ซํผ์ ํตํด ์ฌ์ฉ์๋ ์ง๊ด์ ์ธ ๋์ด์ ๋๊ธฐ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ๋ชจ๋ธ , ๋น์ฆ๋์ค ๋ก์ง ๋ฐ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์๊ฐ์ ์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค.
์๊ตฌ ์ฌํญ์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์ฒ์๋ถํฐ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฌ์์ฑํ์ฌ ์์ฉ ํ๋ก๊ทธ๋จ ์์ฑ, ์ปดํ์ผ ๋ฐ ๋ฐฐํฌ๋ฅผ ์ฒ๋ฆฌํ๋ฏ๋ก ๊ธฐ์ ๋ถ์ฑ๊ฐ ์ ๊ฑฐ๋ฉ๋๋ค. ๊ด๋ฒ์ํ ๊ธฐ๋ฅ์ ๊ฐ์ถ AppMaster.io๋ ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฌ ๋ฐฉ์์ผ๋ก JVM ์ํคํ ์ฒ์ ์ด์ ์ ๋๋ฆด ์ ์์ต๋๋ค.
- Java ๊ธฐ๋ฐ ๋๊ตฌ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ: JVM์ ๊ด๋ฒ์ํ Java ๊ธฐ๋ฐ ๋๊ตฌ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฝ์์คํ ์ AppMaster.io๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ถ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ ์ ์์ต๋๋ค. Java ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํฉํ๋ฉด ์ผ๋ฐ์ ์ธ ๊ฐ๋ฐ ์์ ์ ๋ํ ์๋ฃจ์ ์ ์ ๊ณตํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ฅ์ ํฌ๊ฒ ํฅ์ํ๊ณ ๊ฐ๋ฐ ์๊ฐ์ ์ ์ฝํ ์ ์์ต๋๋ค.
- ํ์ฅ์ฑ: ๋ฉํฐ์ค๋ ๋ฉ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ๊ฐ์ JVM์ ํ์ฅ์ฑ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ ํจ๊ณผ์ ์ผ๋ก ํ์ฅ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค. AppMaster.io๋ JVM ๊ธฐ๋ฅ์ ํตํฉํ์ฌ ๋ค์ํ ์ด์ ์ฒด์ ๋ฐ ์ฅ์น์์ ํ์ฅ์ฑ์ด ๋ฐ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐ ๋์์ ์ค ์ ์์ต๋๋ค.
- ์ต์ ํ๋ ์ฑ๋ฅ: JIT(Just-In-Time) ์ปดํ์ผ ๋ฐ ์๋ ๊ฐ๋น์ง ์์ง๊ณผ ๊ฐ์ JVM์ ์ต์ ํ ๊ธฐ๋ฅ์ AppMaster.io์์ ์์ฑ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ๋์ฑ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ต์ ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ฆฌ์์ค ํ์ฉ์ ๊ทน๋ํํ์ฌ AppMaster.io ๋น๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ์คํ๋๋๋ก ํฉ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ: AppMaster.io๋ JVM์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์์คํ ๋ฆฌ์์ค๋ฅผ ํจ์จ์ ์ผ๋ก ํ์ฉํ๊ณ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์ค์ด๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก JVM์ ์ํคํ ์ฒ๋ ๋ค์ํ ๊ธฐ๋ฅ๊ณผ ์ด์ ์ ํตํด AppMaster.io๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ถ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ๊ณผ ๊ธฐ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. JVM์ ๊ด๋ฒ์ํ ์์ฝ์์คํ ๊ณผ ์ต์ ํ ๊ธฐ๋ฅ์ ํ์ฉํจ์ผ๋ก์จ AppMaster.io๋ ์ฌ์ฉ์์๊ฒ ๋์ฑ ๊ฐ๋ ฅํ๊ณ ํจ์จ์ ์ธ no-code ๊ฐ๋ฐ ๋๊ตฌ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
JVM(Java Virtual Machine)์ Java ๋ฐ์ดํธ์ฝ๋ ํ๋ก๊ทธ๋จ ์คํ, ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ ๊ณต, ๋ค์ํ ํ๋์จ์ด ๋ฐ ์ด์ ์ฒด์ ๊ฐ ํ๋ซํผ ๋ ๋ฆฝ์ฑ ๊ตฌํ์ ๋ด๋นํ๋ Java ๋ฐํ์ ํ๊ฒฝ์ ํ์ ๊ตฌ์ฑ ์์์ ๋๋ค.
JVM์ ์ฃผ์ ๊ตฌ์ฑ ์์์๋ ํด๋์ค ๋ก๋, ๋ฐํ์ ๋ฐ์ดํฐ ์์ญ, ์คํ ์์ง, JIT ์ปดํ์ผ๋ฌ ๋ฐ ๊ฐ๋น์ง ์์ง๊ธฐ๊ฐ ํฌํจ๋ฉ๋๋ค.
JVM์ Java ๋ฐ์ดํธ์ฝ๋๋ฅผ ๊ธฐ๋ณธ ์ด์ ์ฒด์ ๋ฐ ํ๋์จ์ด ๊ณ ์ ์ ๊ธฐ๋ณธ ๊ธฐ๊ณ ์ฝ๋๋ก ๋ณํํ์ฌ ํ๋ซํผ ๋ ๋ฆฝ์ฑ์ ๋ณด์ฅํ๋ฏ๋ก Java ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ ์์ด ์ฌ๋ฌ ํ๋ซํผ์์ ์คํ๋ ์ ์์ต๋๋ค.
JVM Classloader๋ ๋์คํฌ์์ JVM ๋ฉ๋ชจ๋ฆฌ๋ก Java ํด๋์ค๋ฅผ ๋ก๋ํ๊ณ , ํด๋์ค ์ข ์์ฑ์ ํด๊ฒฐํ๊ณ , ํ๋ก๊ทธ๋จ ๋ฐํ์ ์ค์ ํด๋์ค๋ฅผ ์ด๊ธฐํํ๋ ์ญํ ์ ํฉ๋๋ค.
JVM์ Heap, Stack, Method Area, PC Register ๋ฑ ๋ค์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ์์ญ์ ํตํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. ๋ํ ๋ ์ด์ ํ์ํ์ง ์์ ๊ฐ์ฒด์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์๋์ผ๋ก ํด์ ํ๋ ๊ฐ๋น์ง ์์ง๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์ค์ด๊ณ ๋ฆฌ์์ค ์ฌ์ฉ์ ์ต์ ํํฉ๋๋ค.
JVM์ JIT(Just-In-Time) ์ปดํ์ผ๋ฌ๋ ๋ฐํ์ ์ค์ Java ๋ฐ์ดํธ์ฝ๋๋ฅผ ๊ธฐ๋ณธ ๊ธฐ๊ณ ์ฝ๋๋ก ๋ณํํ๋ ์ญํ ์ ํฉ๋๋ค. ์์ฃผ ํธ์ถ๋๋ ๋ฉ์๋๋ฅผ ์ปดํ์ผํ๊ณ ๋์ค์ ์ฌ์ฉํ ์ ์๋๋ก ์ปดํ์ผ๋ ์ฝ๋๋ฅผ ์บ์ฑํ์ฌ Java ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํ ์๋๋ฅผ ์ต์ ํํฉ๋๋ค.
JVM ๋ฐํ์ ๋ฐ์ดํฐ ์์ญ์ ํ๋ก๊ทธ๋จ ์คํ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด JVM์์ ํ ๋นํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋๋ค. ์ฌ๊ธฐ์๋ ํ, ์คํ, ๋ฉ์๋ ์์ญ, ์์ ํ ๋ฐ PC ๋ ์ง์คํฐ๊ฐ ํฌํจ๋ฉ๋๋ค.
JVM ์ํคํ ์ฒ์ ์ด์ ์๋ ํ๋ซํผ ๋ ๋ฆฝ์ฑ, ํ์ฅ์ฑ, ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ, ๋ฐ์ดํธ์ฝ๋ ์คํ ์ต์ ํ, ๋ฉ๋ชจ๋ฆฌ ๋์ ๊ฐ์ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ ํฅ์์ ๋์์ด ๋๋ ๊ฐ๋น์ง ์์ง ์ง์์ด ํฌํจ๋ฉ๋๋ค.
JVM ์ํคํ ์ฒ์ ์ผ๋ถ ์ ํ ์ฌํญ์ ํด์ ๋ฐ ์ปดํ์ผ ํ๋ก์ธ์ค๋ก ์ธํ ์ฑ๋ฅ ์ค๋ฒํค๋, ๋ค์ํ JVM ๊ตฌ์ฑ ์์์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ, ๊ฐ๋น์ง ์์ง์ ๋ํ ์์กด์ฑ์ผ๋ก, ์ฌ๋ฐ๋ฅด๊ฒ ์ต์ ํ๋์ง ์์ผ๋ฉด ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
AppMaster.io์ no-code ํ๋ซํผ์ Java ๊ธฐ๋ฐ ๋๊ตฌ ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ๊ณ ํ์ฅ์ฑ, ์ต์ ํ๋ ๋ฐ์ดํธ์ฝ๋ ์คํ ๋ฐ ๊ฐ๋น์ง ์์ง๊ณผ ๊ฐ์ JVM ๊ธฐ๋ฅ์ ํตํฉํ์ฌ AppMaster.io๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ถ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํจ์จ์ฑ๊ณผ ์ฑ๋ฅ์ ํฅ์ํจ์ผ๋ก์จ JVM์ ์ด์ ์ ์ป์ ์ ์์ต๋๋ค.


