IDE๋ ์๋ฐ ํ๋ก๊ทธ๋จ์ ์คํ ๋ช ๋ น์ด๋ค์ ๋์ ์ ๋ ฅ์ ํด์ฃผ์ด ๋ช ๋ น์ด๋ฅผ ๋ชฐ๋ผ๋ ์ฝ๋๋ฅผ ์คํ ํ ์ ์๊ฒ ํด์ค๋ค. ์ด๋ฌํ ์ถ์ํ ๋๋ถ์ ํธ๋ฆฌํ์ง๋ง ์ด๋ฌํ ์ง์ ์์ด ์๋ฐ๋ฅผ ๊ณต๋ถํ๋ค๋ฉด ๊ณต๋ถ์ ํจ์จ์ฑ์ด ๋จ์ด์ง ์ ์๋ค๋ ๋จ์ ์ด ์๋ค.
JVM(Java Virtual Machine) ๋์ ์๋ฆฌ
JVM์ "java ClassName" ๋ช ๋ น์ด๋ฅผ ํตํด ์คํ์ ์ํฌ ์ ์๊ฒ ๋๋ค. ClassName์ ๋ฐ๋์ main ๋ฉ์๋๊ฐ ๋ค์ด์๋ ์ฃผ ํด๋์ค์ฌ์ผ ํ๋ค. JVM์ด ์คํ์ด ๋ ํ JVM์ ๋ถํธ์คํธ๋ฉ ํด๋์ค ๋ก๋๊ฐ ํ์ํ ํด๋์ค ํ์ผ์ธ java.lang ํจํค์ง์ ํด๋์ค ํ์ผ๋ค์ ๋จผ์ ๋ก๋ ํด์ค๋ค. ์ดํ, ์ ํ๋ฆฌ์ผ์ด์ ํด๋์ค ๋ก๋๊ฐ main ๋ฉ์๋ ์ฃผ ํด๋์ค๋ฅผ ๋ก๋๋ฅผ ํด์ฃผ๊ฒ ๋๋ค. ์ด๋ฌํ ๊ณผ์ ์ด ๋ค ๋๋๋ฉด, JVM์ main ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์คํ์ ์์ํ๊ฒ ๋๋ค.
JVM ๋์ ์์
1. JVM ์คํ
2. JVM ์ด์์ฒด์ ๋ก ๋ถํฐ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ( Heap , Stack , Method Area )
3. (๋ก๋ ๊ณผ์ ) JVM ์์ ํด๋์ค ๋ก๋ MyProject ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋
-> ์ ํ๋ฆฌ์ผ์ด์ ํด๋์ค ๋ก๋๊ฐ main ์ฃผ ํด๋์ค MyProject๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํจ.
4. JVM์ ๋ถํธ์คํธ๋ฉ ํด๋์ค ๋ก๋๋ฅผ ํตํด ํ์ํ ํด๋์ค ํ์ผ๋ค ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋
-> java.lang.Object , java.lang.String, java.lang.System ๋ฑ langํจํค์ง -> ํ์์ ๋ก๋ ๊ธฐ๋ณธ ํด๋์ค
-> ์ฃผ ํด๋์ค์์ ์ฌ์ฉ๋๋ static ์ด๊ธฐํ ๋ธ๋ก ๋ฐ static ํ๋
5. main ๋ฉ์๋ ์คํ
-> main ๋ฉ์๋๊ฐ ์คํ ๋๊ณ , JVM์ ํด๋น ๋ฐ์ดํธ์ฝ๋๋ฅผ ์ฝ๊ณ ํด์ํ์ฌ ๊ธฐ๊ณ์ด๋ก ๋ณํํ๊ฒ ๋๋ค.์ด ๋ณํ ๊ณผ์ ์ JIT ์ปดํ์ผ๋ฌ๊ฐ ์ฌ์ฉ์ด ๋๋ค.
-> ๋ณํ ๋ ๊ธฐ๊ณ์ด๋ ์ด์์ฒด์ ๋ฅผ ํตํด CPU์๊ฒ ์ ๋ฌ์ด ๋๊ณ , CPU๊ฐ ์ด ๋ช ๋ น์ด๋ฅผ ์คํํ๋๋ก ์ง์๋ฅผ ํ๊ฒ ๋๋ค.
-> CPU๋ ์ด์์ฒด์ ์ง์๋ฅผ ๋ฐ๊ณ ๊ธฐ๊ณ์ด ๋ช ๋ น์ด๋ฅผ ์คํํ๊ณ , ํ๋ก๊ทธ๋จ์ ๋ก์ง์ ๋ฐ๋ผ ์์ ์ ์ํํ๋ค.
6. ์ฐ๊ด๋ ๊ฐ์ฒด ์์ฑ ์ import ํจํค์ง ์ฃผ์๊ฐ ์ฐธ์กฐํด์ JVM ํด๋์ค ๋ก๋ ํด๋น ํด๋์ค ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋
-> ํด๋น ํด๋์ค ๋ก๋๋ ์ ํ๋ฆฌ์ผ์ด์ ํด๋์ค ๋ก๋ ์ด๋ค.
-> ( ํ ๋ฒ ๋ก๋๋ ํด๋์ค๋ JVM์ Method Area์ ์ ์ฅ์ด ๋๋ค. ์ฌ์ฌ์ฉ์ฑ ์ฆ๊ฐ )
-> ์ด ํ ๊ฐ์ฒด ์์ฑ ์ Method Area์์ ๊ฐ์ ธ์ Heap ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ฐ์ฒด ์์ฑ
7. ์์ค ์ฝ๋ ์ ๋ถ ์คํ ํ main ๋ฉ์๋ ์ข ๋ฃ ๋ฐ JVM ๋ฉ๋ชจ๋ฆฌ ์ด์์ฒด์ ์ ๋ฐ๋ฉ
Heap / Stack / Method Area ์์ญ์ ๊ดํ ๋ด์ฉ์ ๋ค์์ ๊ธฐ์ฝํ๋ฉฐ...
JIT ์ปดํ์ผ๋ฌ์ ๊ดํ ๋ด์ฉ์ ๋ค์์ ๊ธฐ์ฝํ๋ฉฐ...
JVM๊ณผ ์ด์์ฒด์ ๋ฐ CPU ์ํธ ์์ฉ์ ๋ค์์ ๊ธฐ์ฝํ๋ฉฐ...
๋ง์ฝ JVM์ ๋ํด์ ๋ชจ๋ ๊ฑธ ์๊ณ ์ถ๋ค๋ฉด ์๋์ ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ...
https://docs.oracle.com/javase/specs/jvms/se8/html/index.html
The Java® Virtual Machine Specification
Tim Lindholm Frank Yellin Gilad Bracha Alex Buckley
docs.oracle.com
'โJava > ๐Java Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ๋ณ์ ์ด๊ธฐํ์ ๋ํ ์ดํด (0) | 2024.11.05 |
---|---|
[Java] Annotation ์ด๋? ( ์ ๋ ธํ ์ด์ ) (0) | 2024.11.05 |
[Java] ํด๋์ค์ ๊ฐ์ฒด์ ์ ์ (9) | 2024.10.05 |
[Java] ์์ ( Extends ) (1) | 2024.05.01 |
[Java] ์์ธ ( Exception ) (2) | 2024.04.26 |