heap&stack
๐งheap์ด๋?
์๋ฐ์์ heap์ ๋์ ์ผ๋ก ํ ๋น๋ ๊ฐ์ฒด๋ค์ ์ ์ฅํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ
์๋ฐ ๊ฐ์ ๋จธ์ (JVM)์ heap์ ๊ด๋ฆฌํ๊ณ ๊ฐ์ฒด ์์ฑ, ์ฐธ์กฐ, ์ฐธ์กฐ ํด์ ๋ฅผ ์๋์ผ๋ก ์ฒ๋ฆฌ
์๋ฐ์์ ๋ณ์๋ ๋ฐฐ์ด์ ์คํ(stack) ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ ์ฅ
๊ฐ์ฒด๋ heap ์์ญ์ ์ ์ฅ
๊ฐ์ฒด๋ฅผ ์์ฑํ ๋, ์๋ฐ๋ heap ์์ญ์์ ์ถฉ๋ถํ ํฌ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๊ณ ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํ
์ดํ์ ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๋ฅผ ๋ณ์๋ ๋ฐฐ์ด ์์์ ์ ์ฅํฉ๋๋ค.
heap ๋ฉ๋ชจ๋ฆฌ๋ ๊ฐ๋น์ง ์ปฌ๋ ์ (Garbage Collection)์ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ๊ด๋ฆฌ
๊ฐ๋น์ง ์ปฌ๋ ์ ์ ๋ ์ด์ ์ฌ์ฉํ์ง ์๋ ๊ฐ์ฒด๋ฅผ ์๋์ผ๋ก ๊ฐ์งํ๊ณ
ํด๋น ๊ฐ์ฒด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ์ฌ ๋ค๋ฅธ ๊ฐ์ฒด๊ฐ ์ฌ์ฉํ ์ ์๊ฒ ํจ
๐งstack์ด๋?
์ปดํจํฐ ๋ฉ๋ชจ๋ฆฌ์ ํ ์์ญ์ผ๋ก, ๋ฐ์ดํฐ๋ฅผ ์ผ์์ ์ผ๋ก ์ ์ฅํ๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ ์ค ํ๋์
ํ์ ์ ์ถ(Last-In-First-Out, LIFO) ๋ฐฉ์
๊ฐ์ฅ ๋ง์ง๋ง์ ์ถ๊ฐ๋ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ฅ ๋จผ์ ์ ๊ฑฐ๋๋ ๊ตฌ์กฐ
์คํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ๋ก๊ทธ๋จ์์ ์ง์ญ ๋ณ์์ ๋งค๊ฐ๋ณ์, ํจ์ ํธ์ถ ๋ฑ์ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ
ํจ์๊ฐ ํธ์ถ๋ ๋, ํด๋น ํจ์์ ์ง์ญ ๋ณ์์ ๋งค๊ฐ๋ณ์๋ ์คํ์ ์ ์ฅ
ํจ์ ์คํ์ด ์๋ฃ๋๋ฉด, ํด๋น ์ง์ญ ๋ณ์์ ๋งค๊ฐ๋ณ์๋ ์คํ์์ ์ ๊ฑฐ
์คํ์ ํจ์ ํธ์ถ์ ํํ๋ฅผ ๊ด๋ฆฌํ๊ณ , ํจ์ ์คํ์ด ์๋ฃ๋ ๋๊น์ง ํด๋น ํจ์์ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ง
์คํ์ ํน์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์คํ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ ์คํ์ ์ต๋ ํฌ๊ธฐ๋ฅผ ์ด๊ณผํ๋ฉด
์ค๋ฒํ๋ก์ฐ(Stack Overflow)๊ฐ ๋ฐ์