
Java Compiler : JVM ์ด ํด์ํ ์ ์๋ Java Byte Code๋ก ๋ณ๊ฒฝํ๋ค
Java Byte Code : Java Compiler์ ์ํด ์ํ๋ ๊ฒฐ๊ณผ๋ฌผ๋ก .class ํ์ผ์ด๋ค
Class Loader : JVM ๋ด๋ก .class ํ์ผ์ ๋ก๋ํ์ฌ Loading ๋ ํด๋์ค๋ค์ Runtime Data Area ์ ๋ฐฐ์นํ๋ค
Execution Engine : Loading ๋ ํด๋์ค์ Bytecode๋ฅผ Interpret(ํด์) ํ๋ค
Runtime Data Area : JVM์ด๋ผ๋ ํ๋ก์ธ์ค๊ฐ ํ๋ก๊ทธ๋จ์ ์ํํ๊ธฐ ์ํด OS์์ ํ ๋น๋ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ
Java ํ์ผ์ ์ปดํ์ผ๋ฌ(javac)๊ฐ ๋ฐ์ดํธ์ฝ๋(.class)๋ก ๋ง๋ค๊ณ ,
์ด๋ฅผ ClassLoader๊ฐ JVM๋ด๋ก ๋ก๋ฉํ๋ค.
๋ก๋ฉ๋ Class ํ์ผ๋ค์ Exceute Engine์ ํตํด Interpret(ํด์)๋๋ค.
ํด์๋ ํ๋ก๊ทธ๋จ์ Runtime Data Area ์ ๋ฐฐ์น๋์ด ์ค์ง์ ์ธ ์ํ์ด ์ด๋ฃจ์ด์ง๊ฒ ๋๋ค.
1. static : ํด๋์ค๊ฐ ๋ก๋ ๋ ๋ ๋ณ์๊ฐ ์ ์ผ ๋จผ์ ์ด๊ธฐํ ๋๋ค.
2. field
3. ์์ฑ์ : ๊ฐ์ฒด๊ฐ ์์ฑ๋ ๋, JVM์ด ๋ด๋ถ์ ์ผ๋ก Locking (Thread-Safe ์์ญ)
- ํ์ฌ ์คํ ์ค์ธ ์ค๋ ๋์ ๋ฐ์ดํธ์ฝ๋ ์ค ๋ฒํธ
- ์ค๋ ๋ ํ๋ผ์ด๋น
๋ฉํฐ์ค๋ ๋ฉ์ CPU ์ฝ์ด๋ฅผ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๊ต๋๋ก ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ๋๋ค.
ํน์ ์๊ฐ์ ๊ฐ ์ฝ์ด๋ ํ ์ค๋ ๋์ ๋ช ๋ น์ด๋ง ์คํํ๊ฒ ๋๋ค.
๋ฐ๋ผ์, ์ค๋ ๋ ์ ํ ํ ์ด์ ์ ์คํํ๋ค ๋ฉ์ถ ์ง์ ์ ์ ํํ๊ฒ ๋ณต์ํ๋ ค๋ฉด ์ค๋ ๋ ๊ฐ๊ฐ์๋ ๊ณ ์ ํ ํ๋ก๊ทธ๋จ ์นด์ดํฐ๊ฐ ํ์ํ๋ค. ์ฆ, ๊ฐ ์ค๋ ๋์ ์นด์ดํฐ๋ ์๋ก ์ํฅ์ ์ฃผ์ง ์๋ ๋ ๋ฆฝ๋ ์์ญ์ธ ์ค๋ ๋ ํ๋ผ์ด๋น ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ค.
์ค๋ ๋๊ฐ ๋ค์ดํฐ๋ธ ๋ฉ์๋๋ฅผ ์คํ ์ค์ผ ๋ PC๋ Undefined์ด๋ค
- ์ค๋ ๋ ํ๋ผ์ด๋น
๊ฐ ๋ฉ์๋๊ฐ ํธ์ถ๋ ๋๋ง๋ค ์๋ฐ ๊ฐ์ ๋จธ์ ์ ์คํ ํ๋ ์์ ๋ง๋ค์ด ์ง์ญ ๋ณ์ ํ ์ด๋ธ, ํผ์ฐ์ฐ์ ์คํ, ๋์ ๋งํฌ, ๋ฉ์๋ ๋ฐํ๊ฐ ๋ฑ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค. ์คํ ํ๋ ์์ ๊ฐ์ ๋จธ์ ์คํ์ ํธ์ํ๊ณ ๋ฉ์๋๊ฐ ๋๋๋ฉด ํํ๋ ์ผ์ ๋ฐ๋ณตํ๋ค.
์ง์ญ ๋ณ์ ํ ์ด๋ธ
์๋ฐ ๊ฐ์ ๋จธ์ ์ด ์ปดํ์ผ ํ์์ ์ ์ ์๋ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ , ๊ฐ์ฒด ์ฐธ์กฐ, ๋ฐํ ์ฃผ์ ํ์ ์ ์ ์ฅํ๋ค
์ด ๋ฐ์ดํฐ ํ์ ๋ค์ ์ ์ฅํ๋ ๊ณต๊ฐ์ ์ง์ญ ๋ณ์ ์ฌ๋กฏ์ด๋ผ ํ๋ค
์ฌ๋กฏ ํ๋์ ํฌ๊ธฐ๋ 32๋นํธ์ด๋ค. ๋ฐ๋ผ์, double ํ์ ์ฒ๋ผ ๊ธธ์ด๊ฐ 64๋นํธ์ธ ๋ฐ์ดํฐ๋ ์ฌ๋กฏ ๋ ๊ฐ๋ฅผ ์ฐจ์งํ๋ฉฐ ๋๋จธ์ง ํ์ ์ ๋ชจ๋ ์ฌ๋กฏ ํ๋์ ์ ์ฅ๋๋ค. ์ง์ญ ๋ณ์ ํ ์ด๋ธ์ ๊ตฌ์ฑํ๋ ๋ฐ ํ์ํ ๋ฐ์ดํฐ ๊ณต๊ฐ(์ฌ๋กฏ ๊ฐ์)์ ์ปดํ์ผ ๊ณผ์ ์์ ํ ๋น๋๋ค.
๋ค์ดํฐ๋ธ ๋ฉ์๋๋ฅผ ์คํํ ๋ ์ฌ์ฉํ๋ค
- ๋ชจ๋ ์ค๋ ๋๊ฐ ๊ณต์
๊ฐ์ฒด ํ ๋น ํจ์จ์ ๋์ด๊ธฐ ์ํด ์ค๋ ๋ ๋ก์ปฌ ํ ๋น ๋ฒํผ ์ฌ๋ฌ ๊ฐ๋ก ๋๋จ
๋ฐ์ดํฐ๊ฐ ์๋ฐ ํ์ ์ ์ฅ๋๋ค๋ ์ฌ์ค์ ๋ฌ๋ผ์ง์ง ์์
- ๊ฐ์ ๋จธ์ ์ด ๊ตฌ๋๋ ๋ ๋ง๋ค์ด์ง
- ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ ๊ณต๊ฐ
- ๋ชจ๋ ์ค๋ ๋๊ฐ ๊ณต์
- ํ์ ์ ๋ณด, ์์, ์ ์ ๋ณ์, JIT ์ปดํ์ผ๋ฌ๊ฐ ์ปดํ์ผํ ์ฝ๋ ์บ์
- ๋ ผํ
- ๋ฉ์๋ ์์ญ์ ์ผ๋ถ
- ์์ ํ ํ ์ด๋ธ : ํด๋์ค ๋ฒ์ , ํผ๋ฆฌ๋, ๋ฉ์๋, ์ธํฐํ์ด์ค ๋ฑ ํด๋์ค ํ์ผ์ ํฌํจ๋ ์ค๋ช ์ ๋ณด์ ๋ํด ์ปดํ์ผํ์์ ์์ฑ๋ ๋ค์ํ ๋ฆฌํฐ๋ด๊ณผ ์ฌ๋ฒ ์ฐธ์กฐ๊ฐ ์ ์ฅ๋จ
- ๋์
๋ฐํ์์๋ ๋ฉ์๋ ์์ญ์ ๋ฐํ์ ์์ ํ์ ์๋ก์ด ์์๊ฐ ์ถ๊ฐ๋ ์ ์์ String ํด๋์ค์ intern() ๋ฉ์๋
- ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ง์ ํ ๋น
- ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ, ์ค์ํ ํํฐ์ , ํ์ด์ง ํ์ผ ๊ณผ ํ๋ก์ธ์๊ฐ ๋ค๋ฃฐ ์ ์๋ ์ฃผ์ ๊ณต๊ฐ์ ๋์ ์ ์์
์ฌ์ฉ๋๋ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํฉ์ด ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ํ๊ณ๋ฅผ ๋์ด์๋ฉด OutOfMemoryError ๋ฐ์
| GC ํ๋ ๊ธฐ๋ณธ (0) | 2026.04.01 |
|---|---|
| Java ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ : 11 -> 17 -> 21 (0) | 2025.10.07 |
| [์๋ฐ] ์ถ์ ํด๋์ค์ ์ธํฐํ์ด์ค์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์ (0) | 2025.03.27 |
| [JAVA] Random vs SecureRandom vs ThreadLocalRandom (0) | 2024.12.26 |
| [์๋ฐ] Collections API : TreeMap (0) | 2024.10.22 |