JavaScript ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ ๋ฆฌ
๋ชฉ์ฐจ
1. ๋ฉ๋ชจ๋ฆฌ ์๋ช ์ฃผ๊ธฐ
ํ ๋น → ์ฌ์ฉ → ํด์
- JavaScript๋ ์์ง์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ ๊ด๋ฆฌํฉ๋๋ค.
- ์ฐธ๊ณ : C์ธ์ด๋
malloc(),free()๋ฅผ ํตํด ๊ฐ๋ฐ์๊ฐ ์ง์ ํ ๋น๊ณผ ํด์ ๋ฅผ ์ํํด์ผ ํฉ๋๋ค.
2. ์คํ(Stack) vs ํ(Heap)
์คํ (Stack)
- ์์๊ฐ, ์ฐธ์กฐ ์ฃผ์ ์ ์ฅ
- ๊ณ ์ ํฌ๊ธฐ (์ ์ ๋ฉ๋ชจ๋ฆฌ)
- ์๋๊ฐ ๋งค์ฐ ๋น ๋ฆ
- ์คํ ์ปจํ ์คํธ, ๋ ์์ปฌ ํ๊ฒฝ๊ณผ ๊ด๋ จ๋จ
ํ (Heap)
- ๊ฐ์ฒด, ๋ฐฐ์ด ์ ์ฅ
- ๊ฐ๋ณ ํฌ๊ธฐ (๋์ ๋ฉ๋ชจ๋ฆฌ)
- ์คํ์ ๋นํด ์๋์ ์ผ๋ก ๋๋ฆผ
3. ๊ฐ๋น์ง ์ปฌ๋ ์ (GC)
Reference Counting (์ฐธ์กฐ ํ์ ๊ณ์ฐ)
- ์ฐธ์กฐ ํ์๋ฅผ ์ธ์ 0์ด ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๊ฑฐํฉ๋๋ค.
- ๋ฌธ์ ์ : ์ํ ์ฐธ์กฐ ๋ฐ์ ์ ๋ฉ๋ชจ๋ฆฌ ๋์ ์ํ์ด ์์ต๋๋ค.
Mark-and-Sweep โญ
- ๋ฃจํธ(Root)์์ ๋๋ฌ ๋ถ๊ฐ๋ฅํ ๊ฐ์ฒด๋ฅผ ์๊ฑฐํ๋ ๋ฐฉ์์ ๋๋ค.
- ํ๋ ๋ธ๋ผ์ฐ์ ์์ ์ฃผ๋ก ์ฌ์ฉํ๋ฉฐ, ์ํ ์ฐธ์กฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
4. V8 ๊ฐ๋น์ง ์ปฌ๋ ์
๊ตฌ์กฐ์ ํน์ง
- New Space: ์๋ก ์์ฑ๋ ๊ฐ์ฒด๊ฐ ์์นํ๋ฉฐ, Minor GC๊ฐ ๋น ๋ฅด๊ณ ์์ฃผ ์คํ๋ฉ๋๋ค.
- Old Space: GC์์ 2๋ฒ ์ด์ ์ด์๋จ์ ๊ฐ์ฒด๊ฐ ์ด๋ํ๋ฉฐ, Major GC๊ฐ ๊ฐ๋ ์คํ๋ฉ๋๋ค.
์ต์ ํ ๊ธฐ์
- ํฌํผ ์ค๋ ๋๊ฐ GC๋ฅผ ์ํํฉ๋๋ค.
- ๋ฉ์ธ ์ค๋ ๋๋ ๊ณ์ ์คํ๋๋ฏ๋ก, ์คํ์ด ๋ฉ์ถ๋ Stop-the-World ์๊ฐ์ด ๊ฑฐ์ ์์ต๋๋ค.
ํต์ฌ ์์ฝ ๐ก
- ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ ์์ง์ด ์๋์ผ๋ก ์ํํ์ง๋ง, ์๋ฆฌ๋ฅผ ์๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- ์คํ์ ์ ์ /๋น ๋ฆ, ํ์ ๋์ /๋๋ฆผ์ ํน์ฑ์ ๊ฐ์ง๋๋ค.
- V8 ์์ง์ ํจ์จ์ ์ธ GC๋ฅผ ์ํด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ตฌ๋ถํ์ฌ ๊ด๋ฆฌํฉ๋๋ค.
'๐จ Frontend > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [JavaScript] Event Loop (0) | 2026.03.30 |
|---|---|
| [JavaScript] ๋น๋๊ธฐ ์ฒ๋ฆฌ (0) | 2026.03.30 |