์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- ๊ฐ์ฒด์งํฅ
- ๊ฐ์ฒด์งํฅ์ ์ฌ์ค๊ณผ ์คํด
- ํด๋ฆฐ์ฝ๋
- ์บ์ฑ
- clean code
- ์ถ์ํ
- ๋ฆฌํฉํ ๋ง
- JIT
- REST API
- SRP
- string
- ํ๋ ฅ
- ์ฌ์ฌ์ฉ์ฑ
- Lombok
- ๊ฐ์ฒด
- ์บ์
- spring boot
- ์ฟผ๋ฆฌ ์ต์ ํ
- Java
- ์บก์ํ
- cache
- ๋๋ฉ์ธ ๋ชจ๋ธ
- Refactor
- ์คํ๋ง๋ถํธ
- ์๋ฐ
- JPA
- ํด๋ฆฐ ์ฝ๋
- ์คํ๋ง
- ์ฑ ์
- ์ธํฐํ๋ฆฌํฐ
- Today
- Total
GO SIWOO!
[Java] JVM์ด๋ ๋ฌด์์ธ๊ฐ & Java ์ปดํ์ผ & JVM ๋ด๋ถ ๊ตฌ์กฐ ๋ณธ๋ฌธ
[Java] JVM์ด๋ ๋ฌด์์ธ๊ฐ & Java ์ปดํ์ผ & JVM ๋ด๋ถ ๊ตฌ์กฐ
gosiwoo 2023. 2. 23. 16:05๐JVM์ด๋ ๋ฌด์์ธ๊ฐ?
๊ธฐ์กด์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์๋ ํฌ๋ก์ค ์ปดํ์ผ์ ํตํด ์ปดํ์ผ๋ฌ๊ฐ ์คํ๋๋ ํ๋ซํผ์ด ์๋ ๋ค๋ฅธ ํ๋ซํผ์์ ์คํ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ด์ผ ํ๋ค. ์๋ก ์๋์ฐ์์ ์ปดํ์ผ ํ ์คํํ์ผ์ ๋ฆฌ๋ ์ค์์ ์คํํ๋ฉด ์คํ์ด ๋์ง ์๊ณ ํฌ๋ก์ค ์ปดํ์ผ์ ํด์ฃผ์ด์ผ ํ๋ค.
Java๋ JVM์ผ๋ก ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
JVM์ Java Virtual Machine์ ์ค์ธ ๊ฒ์ผ๋ก ์ง์ญํ๋ฉด '์๋ฐ๋ฅผ ์คํํ๊ธฐ ์ํ ๊ฐ์ ๋จธ์ ๊ธฐ๊ณ(์ปดํจํฐ)'์ด๋ค. JVM์ ํตํด์ Java ์ธ์ด๋ก ์์ฑํ ํ๋ก๊ทธ๋จ์ OS์ ์ข ์๋์ง ์๊ณ ์คํ์ด ๊ฐ๋ฅํด์ก๋ค.
๐Java ์ปดํ์ผ ์์
1. ์๋ฐ ์์ค์ฝ๋(.java) ์์ฑ
2. ์๋ฐ ์ปดํ์ผ๋ฌ(javac.exe)๊ฐ ์๋ฐ ์์ค์ฝ๋(.java)๋ฅผ ๋ฐ์ดํธ ์ฝ๋(.class)๋ก ์ปดํ์ผ
3. ๋ฐ์ดํธ ์ฝ๋(.class)๋ฅผ JVM์ ํด๋์ค ๋ก๋(Class Loader)์๊ฒ ์ ๋ฌ
4. ํด๋์ค ๋ก๋(Class Loader)๋ ๋์ ๋ก๋ฉ์ ํตํด JVM์ ๋ฉ๋ชจ๋ฆฌ(Runtime Data Areas)์ ์ฌ๋ฆฐ๋ค
5. ์คํ ์์ง(Execution Engine)์ด JVM ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์จ ๋ฐ์ดํธ ์ฝ๋(.class)๋ค์ ์คํ
์คํ ์์ง(Execution Engine)
JVM์ ๋ฉ๋ชจ๋ฆฌ(Runtime Data Areas)์ ์ฌ๋ผ๊ฐ ํด๋์ค ํ์ผ์ ์คํ์ํค๋ ๋ฐฉ๋ฒ์ ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋ค์๊ณผ ๊ฐ๋ค.
1. ์ธํฐํ๋ฆฌํฐ (Interpreter) : ๋ฐ์ดํธ ์ฝ๋ ๋ช ๋ น์ด๋ฅผ ํ๋์ฉ ์ฝ์ด์ ํด์ํ๊ณ ์คํ, ์ ์ฒด์ ์ธ ์คํ ์๋๊ฐ ๋๋ฆฐ ๋จ์
2. JIT (Just In Time) ์ปดํ์ผ๋ฌ : ๋ฐ์ดํธ ์ฝ๋ ์ ์ฒด๋ฅผ ์ปดํ์ผํ์ฌ ๋ฐ์ด๋๋ฆฌ ์ฝ๋๋ก ๋ณ๊ฒฝ ํ ๋ฐ์ด๋๋ฆฌ ์ฝ๋๋ฅผ ์ง์ ์คํ
๐JVM ๋ด๋ถ ๊ตฌ์กฐ
Java ์ปดํ์ผ ์์์์ ์ค๋ช ํ ๋ฐ์ ๊ฐ์ด JVM์ ๋ฉ๋ชจ๋ฆฌ, ์ฆ Runtime Data Areas์ ์๋ฐ ๋ฐ์ดํธ ์ฝ๋(.class)๋ฅผ ์คํํ๊ธฐ ์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ์๋ค.
Runtime data areas
๋ชจ๋ ์ค๋ ๋๊ฐ ๊ณต์
Method Area : ํด๋์ค ๋ก๋๊ฐ ํด๋์ค ํ์ผ์ ์ฝ์ด์ค๋ฉด, ํด๋์ค ์ ๋ณด๋ฅผ ํ์ฑ ํ Method Area์ ์ ์ฅ
Heap : ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉฐ ์์ฑํ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ Heap์ ์ ์ฅ
์ค๋ ๋๋ง๋ค ์กด์ฌ
Java stacks : ์ค๋ ๋ ๋ณ๋ก 1๊ฐ๋ง ์กด์ฌํ๊ณ , ์คํ ํ๋ ์์ด ๋ฉ์๋ ํธ์ถ๋ง๋ค ์์ฑ, ๋ฉ์๋๊ฐ ๋๋๋ฉด pop์ผ๋ก ์ ๊ฑฐ
PC Registers : ๊ฐ ์ค๋ ๋๋ ๋ฉ์๋๋ฅผ ์คํํ๊ณ ์๊ณ , pc๋ ๊ทธ ๋ฉ์๋ ์์์ ๋ช ๋ฒ์งธ ์ค์ ์คํํด์ผ ํ๋์ง ๋ํ๋
Native method stacks : Java Bytecode๊ฐ ์๋ ๋ค๋ฅธ ์ธ์ด๋ก ์์ฑ๋ ๋ฉ์๋๊ฐ ๋ด๊น
'Develop > ์๋ฐ(Java)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] Java ์ปฌ๋ ์ ํ๋ ์์ํฌ๋ (Collection Framework) (0) | 2023.03.02 |
---|---|
[Java] Java String Pool์ด๋? (1) | 2023.02.27 |
[Java] ๊ธฐ๋ณธํ ๋ณ์ vs ์ฐธ์กฐํ ๋ณ์ (0) | 2023.02.22 |
[Java] ํจ์ํ ์ธํฐํ์ด์ค(Functional Interface) (0) | 2022.12.29 |
[Java] ๋๋ค ํํ์(Lambda Expression)์ ๊ฐ๋ ๊ณผ ์ฌ์ฉ๋ฒ (0) | 2022.12.27 |