2025. 8. 19. 15:41ใFront-end/JavaScript

๋ชฉ์ฐจ
1. ๊ฐ๋น์ง ์ปฌ๋ ์
2. ๊ฐ๋น์ง ์ปฌ๋ ์ ๋ด๋ถ ์๊ณ ๋ฆฌ์ฆ
3. 00
1. ๊ฐ๋น์ง ์ปฌ๋ ์
๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ๋ฒ ์ค ํ๋๋ก, ๋์ ์ผ๋ก ํ ๋นํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ ์ค ํ์ ์์ด์ง ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ฒด๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์ ๊ฑฐํ๋ ํ๋ก์ธ์ค์ด๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋๋ฌ ๊ฐ๋ฅ์ฑ(reachability)๋ผ๋ ๊ฐ๋ ์ ์ฌ์ฉํด ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํํ๋ค.
์ด๋ป๊ฒ๋ ์ ๊ทผํ๊ฑฐ๋ ์ฌ์ฉํ ์ ์๋ ๊ฐ์ ์๋ฏธํ๋๋ฐ, ๋๋ฌ ๊ฐ๋ฅํ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์์ ์ฌ๋ผ์ง์ง ์๋๋ค.
e.g.
- ํ์ฌ ํจ์์ ์ง์ญ ๋ณ์์ ๋งค๊ฐ๋ณ์
- ์ค์ฒฉ ํจ์์ ์ฒด์ธ์ ์๋ ํจ์์์ ์ฌ์ฉ๋๋ ๋ณ์์ ๋งค๊ฐ๋ณ์
- ์ ์ญ ๋ณ์
์ด๋ฐ ๊ฐ๋ค์ ๋ฃจํธ(root)๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๋ฃจํธ๊ฐ ์ฐธ์กฐํ๋ ๊ฐ์ด๋ ์ฒด์ด๋์ผ๋ก ๋ฃจํธ์์ ์ฐธ์กฐํ ์ ์๋ ๊ฐ์ ๋๋ฌ ๊ฐ๋ฅํ ๊ฐ์ด ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์์ง ๋ด์์ ๋์ ์์ด ๋์ํ๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ๋ชจ๋ํฐ๋ง ํ๊ณ , ๋๋ฌํ ์ ์๋ ๊ฐ์ฒด๋ฅผ ์ญ์ ํ๋ค.
์์๋ก ์๋์ ๊ฐ์ ๊ฐ์ฒด๊ฐ ์์ ๋
let user = {
name: "John"
};
global(์ ์ญ)์ ์ ์ญ ๋ณ์ user๋ ๊ฐ์ฒด {name: "John"}๋ฅผ ์ฐธ์กฐํ๊ณ ์๋ค.
์ฌ๊ธฐ์ user์ ๊ฐ์ null๋ก ๋ฎ์ด์ฐ๋ฉด ์ฐธ์กฐ๊ฐ ์ฌ๋ผ์ง๋ค.
์ด์ {name: "John"}์ ๋๋ฌํ ์ ์๋ ์ํ๊ฐ ๋์์ผ๋ฏ๋ก, ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ ์ด ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํฐ์ ํจ๊ป ๋ฉ๋ชจ๋ฆฌ์์ ์ญ์ ํ๋ค.
- let admin = user; ๋ก user์ ์ฐธ์กฐ๊ฐ ์ฌ๋ผ์ง๋๋ผ๋ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ ์ ์ญ ๋ณ์(admin)์ด ์ฌ์ ํ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ค๋ฉด,
์ด ๊ฐ์ฒด๋ ์ญ์ ๋์ง ์๋๋ค.
2. ๊ฐ๋น์ง ์ปฌ๋ ์ ๋ด๋ถ ์๊ณ ๋ฆฌ์ฆ
๊ฐ๋น์ง ์ปฌ๋ ์ ์ ๋ณดํต ์๋์ ๋จ๊ณ๋ฅผ ๊ฑธ์ณ ์ํ๋๋ค. (mark-and-sweep)
- mark : ์ฐธ์กฐ์ค์ธ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ์ค์ด๋ผ๊ณ markํ๋ ์์
- sweep : mark๊ฐ ๋๋ ํ, mark๋์ง ์์ ๊ฐ์ฒด์์ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ณ/ํ์ → ํ์ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ฉ๋ชจ๋ฆฌ ํ์ ์ถ๊ฐ
- ๋ฃจํธ(root) ์ ๋ณด๋ฅผ ์์งํ๊ณ , ์ด๋ฅผ ๊ธฐ์ต(mark)ํ๋ค.
- ๋ฃจํธ๊ฐ ์ฐธ์กฐํ๊ณ ์๋ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ๋ฐฉ๋ฌธํ๊ณ ์ด๋ค์ markํ๋ค.
- mark๋ ๊ฐ์ฒด์ ๋ชจ๋ ๋ฐฉ๋ฌธํ์ฌ, ๊ทธ ๊ฐ์ฒด๋ค์ด ์ฐธ์กฐํ๋ ๊ฐ์ฒด๋ค๋ markํ๋ค.
- ๋ฃจํธ์์ ๋๋ฌ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฐ์ฒด๋ค์ ๋ฐฉ๋ฌธํ ๋๊น์ง ์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
- mark๋์ง ์์ ๋ชจ๋ ๊ฐ์ฒด๋ค์ ๋ฉ๋ชจ๋ฆฌ์์ ์ญ์ ํ๋ค.
์ด ๋จ๊ณ๋ค์ ์ต์ ํํ๋ ๊ธฐ๋ฒ๋ค์ด ์๋ค.
- generational collection(์ธ๋๋ณ ์์ง)
๊ฐ์ฒด๋ฅผ ์๋ก์ด ๊ฐ์ฒด์ ์ค๋๋ ๊ฐ์ฒด๋ก ๋๋์ด, ์๋ก์ด ๊ฐ์ฒด๋ค์ ๊ณต๊ฒฉ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์์ ์ ๊ฑฐํ๋ค.
์ญํ ์ ๋น ๋ฅด๊ฒ ์ํํ๊ณ ๊ธ๋ฐฉ ์ธ๋ชจ๊ฐ ์์ด์ง๋ ๊ฐ์ฒด๋ค์ด ๋ง๊ธฐ ๋๋ฌธ์ด๋ค. - incremental collection(์ ์ง์ ์์ง)
๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ฌ๋ฌ ๋ถ๋ถ์ผ๋ก ๋ถ๋ฆฌํ ํ, ๊ฐ ๋ถ๋ถ์ ๋ณ๋๋ก ์ํํ๋ค.
์์ ์ ๋ถ๋ฆฌํ๊ณ ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ๋ ๋ฐ์ ์ถ๊ฐ ์์ ์ด ํ์ํ๋, ์ง์ฐ ์๊ฐ์ ๋ถ์ฐ์ํฌ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค. - idle-time collection(์ ํด ์๊ฐ ์์ง)
CPU๊ฐ ์ ํด ์ํ์ผ ๋์๋ง ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์คํํ์ฌ, ์คํ์ ์ฃผ๋ ์ํฅ์ ์ต์ํํ๋ค.
์ฐธ๊ณ
https://ko.javascript.info/garbage-collection
๊ฐ๋น์ง ์ปฌ๋ ์
ko.javascript.info
[Java] ๊ฐ๋น์ง ์ปฌ๋ ์ ์ด๋? (Garbage Collection)
๊ฐ๋น์ง ์ปฌ๋ ์ (Garbage Collection) ์๋ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ๋ฒ ์ค ํ๋๋ก, JVM์ heap ์์ญ์์ ๋์ ์ผ๋ก ํ ๋นํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ ์ค ํ์ ์๊ฒ ๋ ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ฒด๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์ ๊ฑฐํ๋ ํ๋ก์ธ์ค์ด๋ค. ๋งค๋ฒ
velog.io
'Front-end > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| B16 : ์์ฑ์ ํจ์์ new ์ฐ์ฐ์ (0) | 2025.08.19 |
|---|---|
| B15 : ๊ฐ์ฒด์ ๋ฉ์๋ (0) | 2025.08.19 |
| B15 : ๊ฐ์ฒด to ์์ ํ์ ๋ณํ (0) | 2025.08.19 |
| B14 : ๊ฐ์ฒด์ ๋ณต์ฌ (0) | 2025.08.19 |
| B13 : ์ ๊ทผ์ ํ๋กํผํฐ (Accessor Property) (0) | 2025.08.19 |
GitHub