๐JVM (Java Virtual Machine)์ด๋?
: ์๋ฐ ๊ฐ์ ๋จธ์ ์ผ๋ก, JVM ์ค์น๋ง ํ๋ค๋ฉด OS์ ์๊ด์์ด ์๋ฐ์ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ํด์ํ๊ณ ์คํํ๋ ์ญํ ์ ํ๋ค.
- JVM ์คํ ์์
- .java ํ์ผ์ ์ปดํ์ผ๋ฌ(Compiler)๋ฅผ ํตํด .class ํ์ผ๋ก ๋ณํํ๋ค.
- .class ํ์ผ์ JVM์ ClassLoader(ํด๋์ค๋ก๋)์๊ฒ ๋ณด๋ธ๋ค.
- ํด๋์ค๋ก๋์์ JVM ๋ฐํ์ ์์ญ์ผ๋ก ๋ก๋ฉํ์ฌ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฐ๋ค.
๋ฉ๋ชจ๋ฆฌ๋?
: ์ฃผ๊ธฐ์ต์ฅ์น์ธ ํ๋์จ์ด RAM์ ์๋ฏธํ๋ฉฐ, ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค.
- ์ปดํจํฐ์ ์กด์ฌํ๋ ๋ชจ๋ ์์ญ์ RAM์ด๋ ๊ธฐ์ต์ฅ์น ๋ด ๊ณ ์ ํ ์์ญ์ ํ ๋น๋ฐ๋๋ค.
→ ํจ์จ์ ์ผ๋ก ํ๋ก๊ทธ๋จ์ด ์คํ๋๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ตฌ๋ถ๋๋ค.
์๋ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ
- ์๋ฐ ํ๋ก๊ทธ๋จ์ ์คํํ๊ฒ ๋๋ฉด JVM(Java Virtual Machine)์ OS๋ก๋ถํฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ๊ณ , ๋ฉ๋ชจ๋ฆฌ๋ค์ ์๋ฐ ํ๋ก๊ทธ๋จ์ ๋ง๊ฒ ์ฌ๋ฌ ๊ฐ์ ์์ญ์ผ๋ก ๋๋์ด ์ฌ์ฉ๋๋ค.
JVM์ ๋ฉ๋ชจ๋ฆฌ ์์ญ
์๋ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํฌ๊ฒ 3๊ฐ์ง๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
- Static(Method) ์์ญ
- Class์ ์ ๋ณด, ์ ์ญ ๋ณ์, ์ ์ ๋ณ์, ์์ฑ์, static๋ก ์ ์ธ๋ ๊ฒ๋ค์ ์ ์ฅ
- ์ปดํ์ผ ์๊ฐ ๋์ ํ ๋น ๋ ๋ฉ๋ชจ๋ฆฌ๋ก, ๊ณ ์ ๋ ๊ณต๊ฐ์ ์ฐจ์งํ๋ฉฐ ๋ฐํ์ ์ค์๋ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์์
- ํด๋น ์์ญ์ ์๋ ๊ฒ์ ์ด๋์๋ ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ธฐ์, ๋ฌด๋ถ๋ณํ๊ฒ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑํ์ ๋ฐ์
- JVM์ด ๋์ํด์ ํด๋์ค๊ฐ ๋ก๋ฉ๋ ๋ ์์ฑ, ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋ ๋๊น์ง ๊ฐ์ฅ ๊ธธ๊ฒ ์กด์ฌํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ
- Stack : ํ๋ก๊ทธ๋จ์ด ์๋์ผ๋ก ํ ๋น, ํด์งํ๋ ์์ ๋ฉ๋ชจ๋ฆฌ ์์ญ
- ๊ธฐ๋ณธ ์๋ฃํ(int, double, boolean ๋ฑ), ์ง์ญ๋ณ์, ๋งค๊ฐ๋ณ์, Heap์์ญ์ ์ฐธ์กฐ๊ฐ์ด ์ ์ฅ๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ
- LIFO (Last In First Out) ๋ฐฉ์ : ๋ง์ง๋ง์ ๋ค์ด๊ฐ ๊ฒ์ด ๋จผ์ ๋๊ฐ๋ ๊ตฌ
- ํจ์ ํธ์ถ ์ - ์ง์ญ๋ณ์, ๋งค๊ฐ๋ณ์, ๋ฆฌํด๊ฐ ๋ฑ ์ ์ฅ
- ํจ์ ์ข ๋ฃ ์ - ํด๋น ํจ์์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ์๋ ํด์
- ์ปดํ์ผ ๋จ๊ณ(์์ค์ฝ๋๊ฐ ์คํํ์ผ์ด ๋๋ ๋์์ ์ํ)์์ ์ด์๋๋ค.
- Heap : ๊ฐ๋ฐ์(์ฌ์ฉ์)์ ์ํด ํ ๋น/ํด์ ๋๋ ๊ด๋ฆฌ ๊ฐ๋ฅํ ์์ญ.
- GC๊ฐ ์ด๋ฃจ์ด์ง๋ ์ฃผ์ ์์ญ
- new ํค์๋๋ก ์์ฑ๋ ๊ฐ์ฒด์ ๋ฐฐ์ด, ์ฐธ์กฐ๊ฐ(๊ฐ์ฒด)์ด ์ ์ฅ๋๋ค. (ex. Class)
- ๋ฐ์ดํฐ ํฌ๊ธฐ๊ฐ ํ์คํ์ง ์์ผ๋ฏ๋ก ๋ฐํ์์ ํ ๋น๋๋ ์์ญ์ด๋ค.
- ์ค๋ ๋์ ๊ฐ์์ ์๊ด์์ด ํ๋์ ์์ญ๋ง ์กด์ฌํ๋ค.
cf. Stack ์์ญ์ ๊ฒฝ์ฐ ์ค๋ ๋๋ณ๋ก 1๊ฐ์ฉ ์์ฑ๋๋ค.
โ๏ธ
*์ฐธ๊ณ ์ฌ์ดํธ
[CS/Basic] ๋ฉ๋ชจ๋ฆฌ ์์ญ, Heap๊ณผ Stack์ ์ด๋ค ๋ฐ์ดํฐ๊ฐ ์์ผ๊น? (tistory.com)
'Language > JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] ์ ๋ค๋ฆญ (Generic) (4) | 2024.08.28 |
---|---|
[JAVA] OCP (Open Closed Principle) ๊ฐ๋ฐฉ ํ์์ ์์น (0) | 2024.08.26 |
[JAVA] ์ค๋ ๋(Thread) ์๋ฏธ์ ์ฌ์ฉ๋ฒ (4) | 2024.08.24 |
[JAVA] ์ถ์ ํด๋์ค์ ์ธํฐํ์ด์ค (0) | 2024.08.19 |
[JAVA] static์ ์๋ฏธ์ ์ฌ์ฉ๋ฒ (0) | 2024.08.19 |