์๋ฐ์คํฌ๋ฆฝํธ ๋ฉ๋ชจ๋ฆฌ ํ๋กํ์ผ๋ง์ ๋ง์คํฐํ์ธ์! ํ ๋ถ์, ๋์ ๊ฐ์ง ๊ธฐ์ ๋ฐ ์ค์ ์์ ๋ฅผ ํตํด ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ ํํ์ฌ ๊ธ๋ก๋ฒ ์ฑ๋ฅ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑํ๊ณ ์ต๊ณ ์ ์ฑ๋ฅ์ ๋ฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ์ธ์.
์๋ฐ์คํฌ๋ฆฝํธ ๋ฉ๋ชจ๋ฆฌ ํ๋กํ์ผ๋ง: ํ ๋ถ์ ๋ฐ ๋์ ๊ฐ์ง
๋์์์ด ์งํํ๋ ์น ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ ์ต์ ํ๋ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ์ ๋ ๋ณต์กํด์ง์ ๋ฐ๋ผ, ์ ์ธ๊ณ์ ๋ค์ํ ๊ธฐ๊ธฐ์ ์ธํฐ๋ท ์๋์์ ๋ถ๋๋ฝ๊ณ ๋ฐ์์ฑ ์ข์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ค์ํด์ก์ต๋๋ค. ์ด ์ข ํฉ ๊ฐ์ด๋๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฉ๋ชจ๋ฆฌ ํ๋กํ์ผ๋ง์ ๋ณต์กํ ๋ถ๋ถ์ ๊น์ด ํ๊ณ ๋ค์ด ํ ๋ถ์๊ณผ ๋์ ๊ฐ์ง์ ์ด์ ์ ๋ง์ถ๊ณ , ๊ฐ๋ฐ์๋ค์ด ์ ์ธ๊ณ์ ์ผ๋ก ์ญ๋์ ๋ฐํํ ์ ์๋๋ก ์ค์ฉ์ ์ธ ํต์ฐฐ๋ ฅ๊ณผ ์์ ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ํ๋กํ์ผ๋ง์ด ์ค์ํ ์ด์
๋นํจ์จ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ๋ค์ํ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์ ๋ฐํ ์ ์์ต๋๋ค:
- ๋๋ฆฐ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ: ๊ณผ๋ํ ๋ฉ๋ชจ๋ฆฌ ์๋น๋ ์ ํ๋ฆฌ์ผ์ด์ ์๋๋ฅผ ์ ํ์์ผ ์ฌ์ฉ์ ๊ฒฝํ์ ์ํฅ์ ์ค ์ ์์ต๋๋ค. ๋์ด์ง๋ฆฌ์ ๋ผ๊ณ ์ค์ ์ฌ์ฉ์๊ฐ ์ ํ๋ ๋์ญํญ์ ์ฌ์ฉํ๋ค๊ณ ์์ํด ๋ณด์ธ์. ๋๋ฆฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ทธ๋ค์ ๋น ๋ฅด๊ฒ ์ข์ ์ํฌ ๊ฒ์ ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ๋์: ์ด ๊ตํํ ๋ฌธ์ ๋ ์ ์ฐจ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ชจํ์ฌ ์ฌ์ฉ์์ ์์น์ ๊ด๊ณ์์ด ๊ฒฐ๊ตญ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๋จ์ํฌ ์ ์์ต๋๋ค.
- ์ง์ฐ ์๊ฐ ์ฆ๊ฐ: ์ฌ์ฉํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ํ๋ ๊ณผ์ ์ธ ๊ฐ๋น์ง ์ปฌ๋ ์ (Garbage Collection)์ ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ ์ผ์ ์ค์ง์์ผ ๋์ ๋๋ ์ง์ฐ์ ์ ๋ฐํ ์ ์์ต๋๋ค.
- ๋์ ์ฌ์ฉ์ ๊ฒฝํ: ๊ถ๊ทน์ ์ผ๋ก ์ฑ๋ฅ ๋ฌธ์ ๋ ์ค๋ง์ค๋ฌ์ด ์ฌ์ฉ์ ๊ฒฝํ์ผ๋ก ์ด์ด์ง๋๋ค. ์ผ๋ณธ ๋์ฟ์ ์ฌ์ฉ์๊ฐ ์ ์์๊ฑฐ๋ ์ฌ์ดํธ๋ฅผ ๋๋ฌ๋ณด๋ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด ๋ณด์ธ์. ํ์ด์ง ๋ก๋ฉ์ด ๋๋ฆฌ๋ฉด ์ผํ ์นดํธ๋ฅผ ํฌ๊ธฐํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
๋ฉ๋ชจ๋ฆฌ ํ๋กํ์ผ๋ง์ ๋ง์คํฐํ๋ฉด ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์๋ณํ๊ณ ์ ๊ฑฐํ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ ์ ํ๋ฆฌ์ผ์ด์ ์ด ํจ์จ์ ์ด๊ณ ์์ ์ ์ผ๋ก ์คํ๋๋๋ก ๋ณด์ฅํ์ฌ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ํํ์ ์ค ์ ์์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ดํดํ๋ ๊ฒ์ ๋ฆฌ์์ค๊ฐ ์ ํ๋ ํ๊ฒฝ์ด๋ ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ๋ ์์ ์ ์ธ ์ง์ญ์์ ํนํ ์ค์ํฉ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ ์ดํดํ๊ธฐ
ํ๋กํ์ผ๋ง์ ๋ค์ด๊ฐ๊ธฐ ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ํ์ ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉฐ, ๊ฐ๋น์ง ์ปฌ๋ ํฐ์ ์์กดํ์ฌ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๊ฐ์ฒด๊ฐ ์ฐจ์งํ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ์๋ํ๊ฐ ๊ฐ๋ฐ์๊ฐ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ด๋ป๊ฒ ํ ๋น๋๊ณ ํด์ ๋๋์ง ์ดํดํ ํ์๊ฐ ์๋ค๋ ๊ฒ์ ์๋ฏธํ์ง๋ ์์ต๋๋ค. ์ต์ํด์ ธ์ผ ํ ์ฃผ์ ๊ฐ๋ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ํ(Heap): ํ์ ๊ฐ์ฒด์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๊ณณ์ ๋๋ค. ์ด๊ณณ์ด ํ๋กํ์ผ๋ง ์ค์ ์ฐ๋ฆฌ๊ฐ ์ฃผ๋ก ์ง์คํ ์์ญ์ ๋๋ค.
- ์คํ(Stack): ์คํ์ ํจ์ ํธ์ถ๊ณผ ์์ ๊ฐ์ ์ ์ฅํฉ๋๋ค.
- ๊ฐ๋น์ง ์ปฌ๋ ์ (GC): ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ์ฌ์ฉํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ํ๋ ํ๋ก์ธ์ค์ ๋๋ค. ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น๋ ๋ค์ํ GC ์๊ณ ๋ฆฌ์ฆ(์: mark-and-sweep)์ด ์กด์ฌํฉ๋๋ค.
- ์ฐธ์กฐ(References): ๊ฐ์ฒด๋ ๋ณ์์ ์ํด ์ฐธ์กฐ๋ฉ๋๋ค. ๊ฐ์ฒด์ ๋ ์ด์ ํ์ฑ ์ฐธ์กฐ๊ฐ ์์ผ๋ฉด ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ๋์์ด ๋ฉ๋๋ค.
์ฃผ์ ๋๊ตฌ: ํฌ๋กฌ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ํ๋กํ์ผ๋ง
ํฌ๋กฌ ๊ฐ๋ฐ์ ๋๊ตฌ๋ ๋ฉ๋ชจ๋ฆฌ ํ๋กํ์ผ๋ง์ ์ํ ๊ฐ๋ ฅํ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๊ฐ๋ฐ์ ๋๊ตฌ ์ด๊ธฐ: ์น ํ์ด์ง์์ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ์ ํด๋ฆญํ๊ณ "๊ฒ์ฌ"๋ฅผ ์ ํํ๊ฑฐ๋ ํค๋ณด๋ ๋จ์ถํค(Ctrl+Shift+I ๋๋ Cmd+Option+I)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ํญ์ผ๋ก ์ด๋: "๋ฉ๋ชจ๋ฆฌ(Memory)" ํญ์ ์ ํํฉ๋๋ค. ์ฌ๊ธฐ์ ํ๋กํ์ผ๋ง ๋๊ตฌ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
- ํ ์ค๋ ์ท ์ฐ๊ธฐ: "ํ ์ค๋ ์ท ์ฐ๊ธฐ(Take heap snapshot)" ๋ฒํผ์ ํด๋ฆญํ์ฌ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์ค๋ ์ท์ ์บก์ฒํฉ๋๋ค. ์ด ์ค๋ ์ท์ ํ์ ์๋ ๊ฐ์ฒด์ ๋ํ ์์ธํ ๋ทฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฌ๋ฌ ์ค๋ ์ท์ ์ฐ์ด ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๋น๊ตํ ์ ์์ต๋๋ค.
- ํ ๋น ํ์๋ผ์ธ ๊ธฐ๋ก: "ํ ๋น ํ์๋ผ์ธ ๊ธฐ๋ก(Record allocation timeline)" ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค. ์ด๋ฅผ ํตํด ํน์ ์ํธ ์์ฉ ์ค ๋๋ ์ ์๋ ๊ธฐ๊ฐ ๋์์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐ ํด์ ๋ฅผ ๋ชจ๋ํฐ๋งํ ์ ์์ต๋๋ค. ์ด๋ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ฐ์ํ๋ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์๋ณํ๋ ๋ฐ ํนํ ์ ์ฉํฉ๋๋ค.
- CPU ํ๋กํ ๊ธฐ๋ก: "์ฑ๋ฅ(Performance)" ํญ(๊ฐ๋ฐ์ ๋๊ตฌ ๋ด์์๋ ์ฌ์ฉ ๊ฐ๋ฅ)์ ์ฌ์ฉํ๋ฉด CPU ์ฌ์ฉ๋์ ํ๋กํ์ผ๋งํ ์ ์์ผ๋ฉฐ, ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ๊ณ์ ์คํ๋๋ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ ๋ฌธ์ ์ ๊ฐ์ ์ ์ผ๋ก ๊ด๋ จ๋ ์ ์์ต๋๋ค.
์ด๋ฌํ ๋๊ตฌ๋ฅผ ํตํด ์ ์ธ๊ณ ์ด๋์ ์๋ ๊ฐ๋ฐ์๋ ํ๋์จ์ด์ ๊ด๊ณ์์ด ์ ์ฌ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ จ ๋ฌธ์ ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์กฐ์ฌํ ์ ์์ต๋๋ค.
ํ ๋ถ์: ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ํํค์น๊ธฐ
ํ ์ค๋ ์ท์ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๊ฐ์ฒด์ ๋ํ ์์ธํ ๋ทฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด ์ค๋ ์ท์ ๋ถ์ํ๋ ๊ฒ์ด ๋ฉ๋ชจ๋ฆฌ ๋ฌธ์ ๋ฅผ ์๋ณํ๋ ํต์ฌ์ ๋๋ค. ํ ์ค๋ ์ท์ ์ดํดํ๊ธฐ ์ํ ์ฃผ์ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ํด๋์ค ํํฐ: ํด๋์ค ์ด๋ฆ(์: `Array`, `String`, `Object`)์ผ๋ก ํํฐ๋งํ์ฌ ํน์ ๊ฐ์ฒด ์ ํ์ ์ง์คํฉ๋๋ค.
- ํฌ๊ธฐ ์ด: ๊ฐ ๊ฐ์ฒด ๋๋ ๊ฐ์ฒด ๊ทธ๋ฃน์ ํฌ๊ธฐ๋ฅผ ํ์ํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ์๋นํ๋ ๋์์ ์๋ณํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ๊ฑฐ๋ฆฌ(Distance): ๋ฃจํธ๋ก๋ถํฐ์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ํ์ํ์ฌ ๊ฐ์ฒด๊ฐ ์ผ๋ง๋ ๊ฐํ๊ฒ ์ฐธ์กฐ๋๋์ง๋ฅผ ๋ํ๋ ๋๋ค. ๊ฑฐ๋ฆฌ๊ฐ ๊ธธ์๋ก ๊ฐ์ฒด๊ฐ ๋ถํ์ํ๊ฒ ์ ์ง๋๊ณ ์์ ์ ์๋ค๋ ๋ฌธ์ ๋ฅผ ์์ฌํ ์ ์์ต๋๋ค.
- ๋ฆฌํ ์ด๋(Retainers): ๊ฐ์ฒด์ ๋ฆฌํ ์ด๋๋ฅผ ๊ฒ์ฌํ์ฌ ์ ํด๋น ๊ฐ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋จ์ ์๋์ง ์ดํดํฉ๋๋ค. ๋ฆฌํ ์ด๋๋ ํน์ ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๋ฅผ ๋ณด์ ํ์ฌ ๊ฐ๋น์ง ์ปฌ๋ ์ ๋๋ ๊ฒ์ ๋ง๋ ๊ฐ์ฒด์ ๋๋ค. ์ด๋ฅผ ํตํด ๋ฉ๋ชจ๋ฆฌ ๋์์ ๊ทผ๋ณธ ์์ธ์ ์ถ์ ํ ์ ์์ต๋๋ค.
- ๋น๊ต ๋ชจ๋: ๋ ํ ์ค๋ ์ท์ ๋น๊ตํ์ฌ ๊ทธ ์ฌ์ด์ ๋ฉ๋ชจ๋ฆฌ ์ฆ๊ฐ๋ฅผ ์๋ณํฉ๋๋ค. ์ด๋ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์์ด๋ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์ฐพ๋ ๋ฐ ๋งค์ฐ ํจ๊ณผ์ ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ ์น์ฌ์ดํธ์ ํน์ ์น์ ์ ํ์ํ๊ธฐ ์ ๊ณผ ํ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๋น๊ตํฉ๋๋ค.
์ค์ ํ ๋ถ์ ์์
์ ํ ๋ชฉ๋ก๊ณผ ๊ด๋ จ๋ ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ์์ฌ๋๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ํ ์ค๋ ์ท์์:
- ์ ํ ๋ชฉ๋ก์ด ์ฒ์ ๋ก๋๋ ๋ ์ฑ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ค๋ ์ท์ ์ฐ์ต๋๋ค.
- ์ ํ ๋ชฉ๋ก์์ ๋ฒ์ด๋ฉ๋๋ค(์ฌ์ฉ์๊ฐ ํ์ด์ง๋ฅผ ๋ ๋๋ ๊ฒ์ ์๋ฎฌ๋ ์ด์ ).
- ๋ ๋ฒ์งธ ์ค๋ ์ท์ ์ฐ์ต๋๋ค.
- ๋ ์ค๋ ์ท์ ๋น๊ตํฉ๋๋ค. ๊ฐ๋น์ง ์ปฌ๋ ์ ๋์ง ์์ ์ ํ ๋ชฉ๋ก๊ณผ ๊ด๋ จ๋ "๋ถ๋ฆฌ๋ DOM ํธ๋ฆฌ"๋ ๋น์ ์์ ์ผ๋ก ๋ง์ ์์ ๊ฐ์ฒด๋ฅผ ์ฐพ์ต๋๋ค. ๊ทธ๋ค์ ๋ฆฌํ ์ด๋๋ฅผ ๊ฒ์ฌํ์ฌ ์์ธ์ด ๋๋ ์ฝ๋๋ฅผ ์ ํํ ์ฐพ์๋ ๋๋ค. ์ด ๋์ผํ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉ์๊ฐ ์ธ๋ ๋ญ๋ฐ์ด์ ์๋ ์๋ฅดํจํฐ๋ ๋ถ์๋ ธ์ค์์ด๋ ์ค์ ์๋ ๊ด๊ณ์์ด ์ ์ฉ๋ฉ๋๋ค.
๋์ ๊ฐ์ง: ๋ฉ๋ชจ๋ฆฌ ๋์ ์๋ณ ๋ฐ ์ ๊ฑฐ
๋ฉ๋ชจ๋ฆฌ ๋์๋ ๊ฐ์ฒด๊ฐ ๋ ์ด์ ํ์ํ์ง ์์ง๋ง ์ฌ์ ํ ์ฐธ์กฐ๋๊ณ ์์ด ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ํด๋น ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ํ์ง ๋ชปํ ๋ ๋ฐ์ํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ์์ธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ฐ๋ฐ์ ์ธ ์ ์ญ ๋ณ์: `var`, `let` ๋๋ `const` ์์ด ์ ์ธ๋ ๋ณ์๋ `window` ๊ฐ์ฒด์ ์ ์ญ ์์ฑ์ด ๋์ด ๋ฌด๊ธฐํ ์ ์ง๋ฉ๋๋ค. ์ด๋ ์ด๋์์๋ ๊ฐ๋ฐ์๋ค์ด ์ ์ง๋ฅด๋ ํํ ์ค์์ ๋๋ค.
- ์ํ ์ด๋ฒคํธ ๋ฆฌ์ค๋: DOM์์ ์ ๊ฑฐ๋์์ง๋ง ๋ถ๋ฆฌ๋์ง ์์ DOM ์์์ ์ฐ๊ฒฐ๋ ์ด๋ฒคํธ ๋ฆฌ์ค๋์ ๋๋ค.
- ํด๋ก์ : ํด๋ก์ ๋ ์๋์น ์๊ฒ ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ์งํ์ฌ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ๋ฐฉํดํ ์ ์์ต๋๋ค.
- ํ์ด๋จธ (setInterval, setTimeout): ๋ ์ด์ ํ์ํ์ง ์์ ๋ ํ์ด๋จธ๊ฐ ์ง์์ง์ง ์์ผ๋ฉด ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๋ฅผ ๊ณ์ ์ ์งํ ์ ์์ต๋๋ค.
- ์ํ ์ฐธ์กฐ: ๋ ์ด์์ ๊ฐ์ฒด๊ฐ ์๋ก๋ฅผ ์ฐธ์กฐํ์ฌ ์ฃผ๊ธฐ๋ฅผ ๋ง๋ค ๋, ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฃจํธ์์ ๋๋ฌํ ์ ์๋๋ผ๋ ์์ง๋์ง ์์ ์ ์์ต๋๋ค.
- DOM ๋์: ๋ถ๋ฆฌ๋ DOM ํธ๋ฆฌ(DOM์์ ์ ๊ฑฐ๋์์ง๋ง ์ฌ์ ํ ์ฐธ์กฐ๋๋ ์์)๋ ์๋นํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋นํ ์ ์์ต๋๋ค.
๋์ ๊ฐ์ง๋ฅผ ์ํ ์ ๋ต
- ์ฝ๋ ๋ฆฌ๋ทฐ: ์ฒ ์ ํ ์ฝ๋ ๋ฆฌ๋ทฐ๋ ์ ์ฌ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฌธ์ ๊ฐ ํ๋ก๋์ ์ ๋ฐ์๋๊ธฐ ์ ์ ์๋ณํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ์ด๋ ํ์ ์์น์ ๊ด๊ณ์์ด ๋ชจ๋ฒ ์ฌ๋ก์ ๋๋ค.
- ์ ๊ธฐ์ ์ธ ํ๋กํ์ผ๋ง: ์ ๊ธฐ์ ์ผ๋ก ํ ์ค๋ ์ท์ ์ฐ๊ณ ํ ๋น ํ์๋ผ์ธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ฌ์ฉ์ ์ํธ ์์ฉ์ ์๋ฎฌ๋ ์ด์ ํ๊ณ ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์ฆ๊ฐ๋ฅผ ์ฐพ์ผ๋ฉฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒ ์ ํ ํ ์คํธํ์ญ์์ค.
- ๋์ ๊ฐ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ: `leak-finder` ๋๋ `heapdump`์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฉ๋ชจ๋ฆฌ ๋์ ๊ฐ์ง ํ๋ก์ธ์ค๋ฅผ ์๋ํํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋๋ฒ๊น ์ ๋จ์ํํ๊ณ ๋ ๋น ๋ฅธ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ด๋ ๋๊ท๋ชจ ๊ธ๋ก๋ฒ ํ์ ์ ์ฉํฉ๋๋ค.
- ์๋ํ๋ ํ ์คํธ: ์๋ํ๋ ํ ์คํธ ์ค์ํธ์ ๋ฉ๋ชจ๋ฆฌ ํ๋กํ์ผ๋ง์ ํตํฉํ์ญ์์ค. ์ด๋ ๊ฐ๋ฐ ์๋ช ์ฃผ๊ธฐ ์ด๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ํฌ์ฐฉํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ด๋ ์ ์ธ๊ณ์ ํ์๊ฒ ์ ์๋ํฉ๋๋ค.
- DOM ์์์ ์ง์ค: DOM ์กฐ์์ ์ธ์ฌํ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ด์ญ์์ค. ์์๊ฐ ๋ถ๋ฆฌ๋ ๋ ์ด๋ฒคํธ ๋ฆฌ์ค๋๊ฐ ์ ๊ฑฐ๋๋์ง ํ์ธํ์ญ์์ค.
- ํด๋ก์ ๋ฅผ ์ ์คํ๊ฒ ๊ฒ์ฌ: ํด๋ก์ ๋ฅผ ์์ฑํ๋ ์์น๋ฅผ ๊ฒํ ํ์ญ์์ค. ์๊ธฐ์น ์์ ๋ฉ๋ชจ๋ฆฌ ์ ์ง๋ฅผ ์ ๋ฐํ ์ ์์ต๋๋ค.
์ค์ ๋์ ๊ฐ์ง ์์
๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ๋์ ์๋๋ฆฌ์ค์ ๊ทธ ํด๊ฒฐ์ฑ ์ ์ค๋ช ํด ๋ณด๊ฒ ์ต๋๋ค:
1. ์ฐ๋ฐ์ ์ธ ์ ์ญ ๋ณ์
๋ฌธ์ :
function myFunction() {
myVariable = { data: 'some data' }; // Accidentally creates a global variable
}
ํด๊ฒฐ์ฑ :
function myFunction() {
var myVariable = { data: 'some data' }; // Use var, let, or const
}
2. ์ํ ์ด๋ฒคํธ ๋ฆฌ์ค๋
๋ฌธ์ :
const element = document.getElementById('myElement');
element.addEventListener('click', myFunction);
// Element is removed from the DOM, but the event listener remains.
ํด๊ฒฐ์ฑ :
const element = document.getElementById('myElement');
element.addEventListener('click', myFunction);
// When the element is removed:
element.removeEventListener('click', myFunction);
3. ์ ๋ฆฌ๋์ง ์์ ์ธํฐ๋ฒ
๋ฌธ์ :
const intervalId = setInterval(() => {
// Some code that might reference objects
}, 1000);
// The interval continues to run indefinitely.
ํด๊ฒฐ์ฑ :
const intervalId = setInterval(() => {
// Some code that might reference objects
}, 1000);
// When the interval is no longer needed:
clearInterval(intervalId);
์ด ์์ ๋ค์ ๋ณดํธ์ ์ ๋๋ค. ์๊ตญ ๋ฐ๋์ด๋ ๋ธ๋ผ์ง ์ํ์ธ๋ฃจ์ ์ฌ์ฉ์๋ฅผ ์ํ ์ฑ์ ๊ตฌ์ถํ๋ ์์น์ ๋์ผํ๊ฒ ์ ์ง๋ฉ๋๋ค.
๊ณ ๊ธ ๊ธฐ์ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก
ํต์ฌ ๊ธฐ์ ์ธ์ ๋ค์๊ณผ ๊ฐ์ ๊ณ ๊ธ ์ ๊ทผ ๋ฐฉ์์ ๊ณ ๋ คํ์ญ์์ค:
- ๊ฐ์ฒด ์์ฑ ์ต์ํ: ๊ฐ๋น์ง ์ปฌ๋ ์ ์ค๋ฒํค๋๋ฅผ ์ค์ด๊ธฐ ์ํด ๊ฐ๋ฅํ ๋๋ง๋ค ๊ฐ์ฒด๋ฅผ ์ฌ์ฌ์ฉํ์ญ์์ค. ํนํ ์๊ณ ์๋ช ์ด ์งง์ ๊ฐ์ฒด๋ฅผ ๋ง์ด ์์ฑํ๋ ๊ฒฝ์ฐ(์: ๊ฒ์ ๊ฐ๋ฐ) ๊ฐ์ฒด ํ๋ง์ ๊ณ ๋ คํ์ญ์์ค.
- ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ต์ ํ: ํจ์จ์ ์ธ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ํํ์ญ์์ค. ์๋ฅผ ๋ค์ด, ์ ๋ ฌ๋ ํค๊ฐ ํ์ํ์ง ์์ ๊ฒฝ์ฐ ์ค์ฒฉ๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค `Set` ๋๋ `Map`์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ ์ผ ์ ์์ต๋๋ค.
- ๋๋ฐ์ด์ฑ ๋ฐ ์ค๋กํ๋ง: ์ด๋ฒคํธ ์ฒ๋ฆฌ(์: ์คํฌ๋กค, ํฌ๊ธฐ ์กฐ์ )์ ์ด๋ฌํ ๊ธฐ์ ์ ๊ตฌํํ์ฌ ๋ถํ์ํ ์ด๋ฒคํธ ๋ฐ์์ ๋ฐฉ์งํ๊ณ , ์ด๋ ๋ถํ์ํ ๊ฐ์ฒด ์์ฑ ๋ฐ ์ ์ฌ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๋ฌธ์ ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
- ์ง์ฐ ๋ก๋ฉ(Lazy Loading): ํฐ ๊ฐ์ฒด๋ฅผ ๋ฏธ๋ฆฌ ์ด๊ธฐํํ์ง ์๋๋ก ํ์ํ ๋๋ง ๋ฆฌ์์ค(์ด๋ฏธ์ง, ์คํฌ๋ฆฝํธ, ๋ฐ์ดํฐ)๋ฅผ ๋ก๋ํ์ญ์์ค. ์ด๋ ์ธํฐ๋ท ์ ์์ด ๋๋ฆฐ ์ง์ญ์ ์ฌ์ฉ์์๊ฒ ํนํ ์ค์ํฉ๋๋ค.
- ์ฝ๋ ์คํ๋ฆฌํ (Code Splitting): ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ์๊ณ ๊ด๋ฆฌ ๊ฐ๋ฅํ ์ฒญํฌ๋ก ๋๋๊ณ (Webpack, Parcel ๋๋ Rollup๊ณผ ๊ฐ์ ๋๊ตฌ ์ฌ์ฉ) ํ์์ ๋ฐ๋ผ ์ด๋ฌํ ์ฒญํฌ๋ฅผ ๋ก๋ํ์ญ์์ค. ์ด๋ ์ด๊ธฐ ๋ก๋ ํฌ๊ธฐ๋ฅผ ์๊ฒ ์ ์งํ๊ณ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- ์น ์์ปค(Web Workers): ๊ณ์ฐ ์ง์ฝ์ ์ธ ์์ ์ ์น ์์ปค๋ก ์คํ๋ก๋ํ์ฌ ๋ฉ์ธ ์ค๋ ๋๋ฅผ ์ฐจ๋จํ๊ณ ๋ฐ์์ฑ์ ์ํฅ์ ๋ฏธ์น๋ ๊ฒ์ ๋ฐฉ์งํ์ญ์์ค.
- ์ ๊ธฐ์ ์ธ ์ฑ๋ฅ ๊ฐ์ฌ: ์ ๊ธฐ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ํ๊ฐํ์ญ์์ค. Lighthouse(ํฌ๋กฌ ๊ฐ๋ฐ์ ๋๊ตฌ์์ ์ฌ์ฉ ๊ฐ๋ฅ)์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ต์ ํํ ์์ญ์ ์๋ณํ์ญ์์ค. ์ด๋ฌํ ๊ฐ์ฌ๋ ์ ์ธ๊ณ์ ์ผ๋ก ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
Node.js์์์ ๋ฉ๋ชจ๋ฆฌ ํ๋กํ์ผ๋ง
Node.js๋ ์ฃผ๋ก `node --inspect` ํ๋๊ทธ๋ `inspector` ๋ชจ๋์ ์ฌ์ฉํ์ฌ ๊ฐ๋ ฅํ ๋ฉ๋ชจ๋ฆฌ ํ๋กํ์ผ๋ง ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์๋ฆฌ๋ ๋น์ทํ์ง๋ง ๋๊ตฌ๋ ๋ค๋ฆ ๋๋ค. ๋ค์ ๋จ๊ณ๋ฅผ ๊ณ ๋ คํ์ญ์์ค:
- `node --inspect` ๋๋ `node --inspect-brk`(์ฝ๋์ ์ฒซ ์ค์์ ์ค๋จ)๋ฅผ ์ฌ์ฉํ์ฌ Node.js ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ํฌ๋กฌ ๊ฐ๋ฐ์ ๋๊ตฌ ๊ฒ์ฌ๊ธฐ๊ฐ ํ์ฑํ๋ฉ๋๋ค.
- ํฌ๋กฌ ๊ฐ๋ฐ์ ๋๊ตฌ์์ ๊ฒ์ฌ๊ธฐ์ ์ฐ๊ฒฐํฉ๋๋ค: ํฌ๋กฌ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ด๊ณ chrome://inspect๋ก ์ด๋ํฉ๋๋ค. Node.js ํ๋ก์ธ์ค๊ฐ ๋ชฉ๋ก์ ํ์๋์ด์ผ ํฉ๋๋ค.
- ๊ฐ๋ฐ์ ๋๊ตฌ ๋ด์ "๋ฉ๋ชจ๋ฆฌ" ํญ์ ์ฌ์ฉํ์ฌ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์์ ๋ง์ฐฌ๊ฐ์ง๋ก ํ ์ค๋ ์ท์ ์ฐ๊ณ ํ ๋น ํ์๋ผ์ธ์ ๊ธฐ๋กํฉ๋๋ค.
- ๋ ๊ณ ๊ธ ๋ถ์์ ์ํด, `clinicjs`(์๋ฅผ ๋ค์ด, ํ๋ ์ ๊ทธ๋ํ์ `0x` ์ฌ์ฉ)์ ๊ฐ์ ๋๊ตฌ๋ ๋ด์ฅ๋ Node.js ํ๋กํ์ผ๋ฌ๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.
Node.js ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๋ถ์ํ๋ ๊ฒ์ ์๋ฒ ์ธก ์ ํ๋ฆฌ์ผ์ด์ , ํนํ API์ ๊ฐ์ด ๋ง์ ์์ฒญ์ ๊ด๋ฆฌํ๊ฑฐ๋ ์ค์๊ฐ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ๋ค๋ฃจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ํ ๋ ๋งค์ฐ ์ค์ํฉ๋๋ค.
์ค์ ์์ ๋ฐ ์ฌ๋ก ์ฐ๊ตฌ
๋ฉ๋ชจ๋ฆฌ ํ๋กํ์ผ๋ง์ด ์ค์ํ๋ ๋ช ๊ฐ์ง ์ค์ ์๋๋ฆฌ์ค๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
- ์ ์์๊ฑฐ๋ ์น์ฌ์ดํธ: ํ ๋ํ ์ ์์๊ฑฐ๋ ์ฌ์ดํธ๋ ์ ํ ํ์ด์ง์์ ์ฑ๋ฅ ์ ํ๋ฅผ ๊ฒช์์ต๋๋ค. ํ ๋ถ์ ๊ฒฐ๊ณผ ์ด๋ฏธ์ง ๊ฐค๋ฌ๋ฆฌ์ ์ด๋ฏธ์ง ๋ฐ ์ด๋ฒคํธ ๋ฆฌ์ค๋์ ๋ถ์ ์ ํ ์ฒ๋ฆฌ๋ก ์ธํ ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ๊ฒฌ๋์์ต๋๋ค. ์ด๋ฌํ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์์ ํ์ ํ์ด์ง ๋ก๋ ์๊ฐ์ด ํฌ๊ฒ ๊ฐ์ ๋๊ณ ์ฌ์ฉ์ ๊ฒฝํ์ด ํฅ์๋์์ผ๋ฉฐ, ํนํ ์ด์งํธ ์นด์ด๋ก์์ ์ผํํ๋ ๊ณ ๊ฐ๊ณผ ๊ฐ์ด ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ๋ ์์ ์ ์ธ ์ง์ญ์ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ ์ฌ์ฉ์์๊ฒ ํฐ ์ด์ ์ด ๋์์ต๋๋ค.
- ์ค์๊ฐ ์ฑํ ์ ํ๋ฆฌ์ผ์ด์ : ํ ์ค์๊ฐ ์ฑํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ๋์ด ๋ง์ ๊ธฐ๊ฐ ๋์ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์์์ต๋๋ค. ํ๋กํ์ผ๋ง ๊ฒฐ๊ณผ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊ณผ๋ํ ์์ ์ฑํ ๋ฉ์์ง ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์์์ด ๋ฐํ์ก์ต๋๋ค. ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ต์ ํํ๊ณ ๋ถํ์ํ ๊ฐ์ฒด ์์ฑ์ ์ค์ด์ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ด ํด๊ฒฐ๋์๊ณ , ์ธ๋ ๋ด๋ธ๋ฆฌ์ ์ฌ์ฉ์์ ๊ฐ์ด ์ ์ธ๊ณ ์ฌ์ฉ์๋ค์ด ์ํํ๊ณ ์์ ์ ์ธ ํต์ ์ ๊ฒฝํํ ์ ์๊ฒ ๋์์ต๋๋ค.
- ๋ฐ์ดํฐ ์๊ฐํ ๋์๋ณด๋: ๊ธ์ต ๊ธฐ๊ด์ ์ํด ๊ตฌ์ถ๋ ๋ฐ์ดํฐ ์๊ฐํ ๋์๋ณด๋๋ ๋์ฉ๋ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ ๋๋งํ ๋ ๋ฉ๋ชจ๋ฆฌ ์๋น ๋ฌธ์ ๋ก ์ด๋ ค์์ ๊ฒช์์ต๋๋ค. ์ง์ฐ ๋ก๋ฉ, ์ฝ๋ ์คํ๋ฆฌํ , ์ฐจํธ ๋ ๋๋ง ์ต์ ํ๋ฅผ ๊ตฌํํ์ฌ ๋์๋ณด๋์ ์ฑ๋ฅ๊ณผ ๋ฐ์์ฑ์ ํฌ๊ฒ ํฅ์์์ผฐ๊ณ , ์์น์ ๊ด๊ณ์์ด ๋ชจ๋ ๊ธ์ต ๋ถ์๊ฐ์๊ฒ ํํ์ ์ฃผ์์ต๋๋ค.
๊ฒฐ๋ก : ๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ๋ฉ๋ชจ๋ฆฌ ํ๋กํ์ผ๋ง ์์ฉ
๋ฉ๋ชจ๋ฆฌ ํ๋กํ์ผ๋ง์ ์ฐ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ผ๋ก ๊ฐ๋ ์ง์ ์ ์ธ ๊ฒฝ๋ก๋ฅผ ์ ๊ณตํ๋ ํ๋ ์น ๊ฐ๋ฐ์ ํ์์ ์ธ ๊ธฐ์ ์ ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ์ ์ดํดํ๊ณ , ํฌ๋กฌ ๊ฐ๋ฐ์ ๋๊ตฌ์ ๊ฐ์ ํ๋กํ์ผ๋ง ๋๊ตฌ๋ฅผ ํ์ฉํ๋ฉฐ, ํจ๊ณผ์ ์ธ ๋์ ๊ฐ์ง ๊ธฐ์ ์ ์ ์ฉํจ์ผ๋ก์จ, ๋ค์ํ ๊ธฐ๊ธฐ์ ์ง๋ฆฌ์ ์์น์์ ํจ์จ์ ์ด๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋๋ฉฐ ํ์ํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค.
๋์ ๊ฐ์ง๋ถํฐ ๊ฐ์ฒด ์์ฑ ์ต์ ํ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ ผ์๋ ๊ธฐ์ ๋ค์ ๋ณดํธ์ ์ผ๋ก ์ ์ฉ๋๋ค๋ ์ ์ ๊ธฐ์ตํ์ญ์์ค. ์บ๋๋ค ๋ฐด์ฟ ๋ฒ์ ์๊ท๋ชจ ๊ธฐ์ ์ ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ , ๋ชจ๋ ๊ตญ๊ฐ์ ์ง์๊ณผ ๊ณ ๊ฐ์ ๋ ๊ธ๋ก๋ฒ ๊ธฐ์ ์ ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋์ผํ ์์น์ด ์ ์ฉ๋ฉ๋๋ค.
์น์ด ๊ณ์ ์งํํ๊ณ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ด ์ ์ ๋ ๊ธ๋ก๋ฒํ๋จ์ ๋ฐ๋ผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฅ๋ ฅ์ ๋ ์ด์ ์ฌ์น๊ฐ ์๋๋ผ ํ์๊ฐ ๋์์ต๋๋ค. ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ์ ๋ฉ๋ชจ๋ฆฌ ํ๋กํ์ผ๋ง์ ํตํฉํจ์ผ๋ก์จ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฅ๊ธฐ์ ์ธ ์ฑ๊ณต์ ํฌ์ํ๊ณ ๋ชจ๋ ๊ณณ์ ์ฌ์ฉ์๊ฐ ๊ธ์ ์ ์ด๊ณ ์ฆ๊ฑฐ์ด ๊ฒฝํ์ ํ๋๋ก ๋ณด์ฅํ๋ ๊ฒ์ ๋๋ค.
์ค๋ ๋ฐ๋ก ํ๋กํ์ผ๋ง์ ์์ํ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ฌ๋ ฅ์ ์ต๋ํ ๋ฐํํ์ญ์์ค! ์ง์์ ์ธ ํ์ต๊ณผ ์ค์ต์ ๊ธฐ์ ํฅ์์ ๋งค์ฐ ์ค์ํ๋ฏ๋ก, ๊ฐ์ ํ ๊ธฐํ๋ฅผ ๊ณ์ ์ฐพ์ผ์ญ์์ค.
ํ์ด์ ๋น๋ฉฐ, ์ฆ๊ฑฐ์ด ์ฝ๋ฉ ๋์ธ์! ํญ์ ์ฌ๋ฌ๋ถ์ ์์ ์ด ๋ฏธ์น๋ ๊ธ๋ก๋ฒํ ์ํฅ์ ์๊ฐํ๊ณ ๋ชจ๋ ์ผ์์ ํ์ํจ์ ์ถ๊ตฌํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.