๐ป
Java ํ๋ก๊ทธ๋๋ฐ - ์์กด๊ด๊ณ(Dependency) ๋ณธ๋ฌธ
์์ 1)
RAM ๊ตฌ์กฐ
heap | stack | ||
new AA()... | 0x100 | a | 0x100 |
b | 0x100 | ||
c | 0x100 | ||
d | 0x100 | ||
new AA()... | 0x200 | x | 0x200 |
y | 0x200 | ||
b, c, d ์๋ก ํ ๋น ๋ฐ์ง ์๊ณ ์ฃผ์๊ฐ์ ์ฐธ์กฐํ๋ค.
new๋ผ๋ ํค์๋๋ก ๊ฐ์ฒด๋ฅผ ๋ฐ์ํ๋ฉด ์๋ก์ด ๊ณต๊ฐ์ ํ ๋น ๋ฐ๋๋ค.
b.func() ์ด ์คํ๋๋ ์ด์ ๋ a=null; ๋ก ํด์ค๋ b๋ ์ฃผ์๊ฐ์ ์ฐธ์กฐํ๊ธฐ๋๋ฌธ์ด๋ค.
RAM
heap | stack | ||
a | null | ||
b | null | ||
c | null | ||
d | null | ||
new AA()... | 0x200 | x | 0x200 |
y | 0x200 | ||
๋ฉ๋ชจ๋ฆฌ๋ constant, heap, stack ์์ญ์ด ์กด์ฌ.
constanct : static. ์ข ๋ฃ๊น์ง ์ด์์๋ค.
stack : ๋ธ๋ญ๋จ์๋ก ์กด์ฌํ๋ค.
heap : new. ๊ฐ๋น์ง ์ปฌ๋ ํฐ์ ์ํด์ ์ง์์ง๋๊น์ง ์ด์์๋ค
AA a = new AA();
์ผ์ชฝ์ ์คํ์์ญ ์ค๋ฅธ์ชฝ์ ํ์์ญ.
new ๋ผ๋ ํค์๋๋ก ๋ค์ด๊ฐ๋ฉด ํ์์ญ.
๊ทธ๋ฌ๋ ์์ ํจ์์ฒ๋ผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์๊ณ ํจ์๋จ์๋ก ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ์ฒด๋ก ๋์ ธ์ฃผ๋ ๊ฒฝ์ฐ๊ฐ ๋ ๋ง๋ค.
๋ค์ ์์ ๋ฅผ ์ดํด๋ณด์.
์์ 2)
heap | stack | ||
new BB() | 0x100 | b | 0x100 |
new CC() | 0x200 | c | 0x200 |
heap | stack | ||
new BB | 0x100 | b | null |
new CC | 0x200 | c | 0x200 |
main ํจ์์์ b = null;
heap | stack | ||
b | null | ||
new CC() | 0x200 | c | 0x200 |
CCํด๋์ค์ ํจ์ fun(BB b) ์์ b = null; ์ ํด์ค์ผ ๋น๋ก์ heap์์ ์ง์์ง๋ค. (by ๊ฐ๋น์ง์ฝ๋ ํฐ)
์๋์ ๊ฒฝ์ฐ๋ฅผ ๋ณด์.
๊ฐ์ฒด๋ฅผ ์ง์ญ๋ณ์ ๋๋ ๋งค๊ฐ๋ณ์๋ก ์ฌ์ฉ => Dependency(์์กด๊ด๊ณ)
fun(BB b) : ๊ฐ์ฒด๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ์ด๊ฒ
sub() : ๊ฐ์ฒด๋ฅผ ํจ์์์์ ์ง์ญ๋ณ์์ฒ๋ผ ์ฌ์ฉ
<< ํด๋์ค ๋ค์ด์ด๊ทธ๋จ >>
Dependency(์์กด๊ด๊ณ)
- ๋จ๋ฐฉํฅ์ด๋ฉฐ ํจ์ ์์ ๊ฐ์ฒด๋ฅผ Parameter, ์์ฑ, ๋ฐํ ์ฌ์ฉ
์์ 3)