-
[Java] ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ - Stack & Heap๊ฐ๋ฐ์ ์ ๋ฆฌ๋ ธํธ/JAVA 2022. 1. 13. 23:03
JVM ์ด๋
.java -compile-> .class (๋ฐ์ดํธ์ฝ๋)
์ธ๊ฐ์ด ์์ฑํ ํ๋ก๊ทธ๋จ์ธ์ด์ธ ์๋ฐ๋ฅผ ์ปดํ์ผํ๋ฉด ํด๋์ค๊ฐ ๋๋ค. ํด๋์ค๋ ๋ฐ์ดํธ ์ฝ๋์ด๋ค.
๊ทธ๋ฌ๋ ๋ฐ์ดํธ์ฝ๋๋ ๊ธฐ๊ณ์ธ์ด๊ฐ ์๋๋ผ, ์๋์ฐ/๋งฅ ๋ฑ OS์์ ํด์ํ ์ ์๋ค.
-> .classํ์ผ์ ์คํํ ์ปดํจํฐ์ ๊น๋ฆฐ JVM์ ๊ฐ๋ค์ฃผ๋ฉด
ํ๋ก๊ทธ๋จ์ ์คํํ ๋ ๋ง๋ค ํด๋น ๊ธฐ๊ณ์ธ์ด๋ก ๋ฒ์ญํด์ค๋ค.
-> ์ ์ค๊ฐ๋จ๊ณ์ธ ๋ฐ์ดํธ์ฝ๋์ ๋จ๊ณ๋ฅผ ๊ฑฐ์น ๊น?
OS์ข ์์ ์ด์ง ์๊ณ Javaํ์ผ ํ๋๋ง์ผ๋ก ์ด๋ค OS๋ JVM์์์ ๋์ํ ์ ์๊ฒ ํ๊ธฐ ์ํจ์ด๋ค.
JVM ๊ตฌ์กฐ
์ด ์ค์์ Runtime Data Area - Heap & Stack์ ๋ํด ์์๋ณด์.
Heap & Stack
Stack Heap ๋ฉ์๋ ๋ด์ ๊ธฐ๋ณธ ์๋ฃํ(int, double, long, boolean ๋ฑ)์ ์ง์ญ๋ณ์ ๋ฐ์ดํฐ๊ฐ์ด ์ ์ฅ๋.
๊ฐ์ฒด ์์ฑ์ ์ฐธ์กฐ๊ฐ(์ฃผ์๊ฐ)์ ๊ฐ๊ณ ์๋ค.Objectํ์ (๊ฐ์ฒด, ๋ฐฐ์ด, ๋ฌธ์์ด ๋ฑ)์ ์ค์ ๋ฐ์ดํฐ๊ฐ์ด ์ ์ฅ๋.
์ด ์์ญ์ ์ฐธ์กฐ๊ฐ์ Stack์์ญ์ด ๊ฐ๊ณ ์๋ค.ํด๋น ๋ฉ์๋๊ฐ ํธ์ถ๋ ๋ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋๊ณ ,
์ข ๋ฃ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ๊ฐ ํด์ Garbage Collection์ ๋์.
GC๊ฐ ๋ฏธ์ฐธ์กฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๋ค.๊ฐ Thread๋ ์์ ๋ง์ Stack์ ๊ฐ๋๋ค ๋จ ํ๋์ ์์ญ๋ง ์กด์ฌ test(skills) ๊น์ง ์คํ ์์ ๋ฉ๋ชจ๋ฆฌ ์ํฉ.
test(skills)๊ฐ ๋๋ ํ ํด๋น ํจ์์ ๋ก์ปฌ๋ณ์๋ Stack๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ๋ก ์ง์์ง๋ค.
immutableํ ์ฑ์ง์ ๊ฐ์ง String
String์ ๊ธฐ๋ณธ ํ์ (Primitive Type)์ด ์๋ ์ฐธ์กฐ ํ์ (Reference Type)์ด๋ค.
๋ฌธ์์ด์ abc -> def๋ก ๋ฐ๊ฟ๋ ๋ด๋ถ์ ์ผ๋ก๋ ์ค์ ๊ฐ์ด ๋ฐ๋๋๊ฒ์ด ์๋, ์๋ก์ด ๊ฐ์ด ์์ฑ๋๊ฒ๊ณผ ๊ฐ๋ค.
๋๋ณด๊ธฐ<์ถ์ฒ>
https://www.youtube.com/watch?v=W2q7W4_3gpY&ab_channel=%EC%84%B1%EC%A7%80%EC%B1%84%EB%84%90
'๊ฐ๋ฐ์ ์ ๋ฆฌ๋ ธํธ > JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] Spring๊ณผ SpringBoot ๊ฐ๋ , ์ฐจ์ด (0) 2022.02.06 [Spring] ์คํ๋ง AOP (0) 2022.01.24 [Spring] ์ฝ๋๋ก ์์๋ณด๋ ์คํ๋ง IoC (0) 2022.01.22 [Spring] ์คํ๋ง IoC (0) 2022.01.22 [Spring] ์คํ๋ง Life Cycle (0) 2022.01.17