๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ ํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ๋ณธ์ ์ธ ์ธก๋ฉด์ผ๋ก, ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ์ฑ๊ณผ ์ฑ๋ฅ์ ํ์์ ์ ๋๋ค. ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ๊ด๋ จ๋ ๊ณผ์ ์ค ํ๋๋ ๋ฉ๋ชจ๋ฆฌ ๋์ ํ์์ผ๋ก, ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ํฌ๊ฒ ์ ํ์ํค๊ฑฐ๋ ์ฌ์ง์ด ์ถฉ๋์ ์ผ์ผํฌ ์๋ ์์ต๋๋ค. ์ด ๋ฌธ์์์๋ ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฌด์์ธ์ง, ์์ธ, ๊ฐ์ง ๋ฐฉ๋ฒ, ๋ฐฉ์ง ๋ฐฉ๋ฒ์ ๋ํด ์์ธํ ์ค๋ช ํฉ๋๋ค. ๋ํ ์ค์ ์ฝ๋ฉ ์์ ๋ฅผ ํฌํจํ๊ณ ๋ค์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค. SMART TS XL ๊ณ ๊ธ ์ ์ ๋ถ์, ํ๋ก์ฐ์ฐจํธ ์์ฑ, ์ฝ๋ ํ์ง ๊ฐ์ ์ ํตํด ๋ฉ๋ชจ๋ฆฌ ๋์์ ํ์ง, ๋ถ์ ๋ฐ ์๋ฐฉ์ ๊ฐํํ ์ ์์ต๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ํด๊ฒฐํด์ผ ํ๋์?
SMART TS XL ์๋ฐฑ๋ง ๊ฐ์ ์ฝ๋ ์ค์์ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๊ฐ์งํ๋ ์ด์์ ์ธ ์๋ฃจ์ ์ ๋๋ค.
์ง๊ธ ํ์๋ฉ๋ชจ๋ฆฌ ๋์๋?
๋ฉ๋ชจ๋ฆฌ ๋์๋ ํ๋ก๊ทธ๋จ์ด ํ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ์ง๋ง ๋ ์ด์ ํ์ํ์ง ์์ ๋ ํด์ ํ์ง ๋ชปํ ๋ ๋ฐ์ํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ ๋ ์ด์ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ๋์ง ์์ง๋ง ์ด์ ์ฒด์ ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค์์ ํ์ํ ์ ์์ต๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ด๋ฌํ ํด์ ๋์ง ์์ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ด ๋์ ๋์ด ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ ์์ด ์ค์ด๋ค์ด ์ฑ๋ฅ์ด ์ ํ๋๊ณ ๊ฒฐ๊ตญ ์์คํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํด์ง๋ฉด ํ๋ก๊ทธ๋จ์ด ์ถฉ๋ํ ์ ์์ต๋๋ค.
Java๋ C#๊ณผ ๊ฐ์ ๊ด๋ฆฌ ์ธ์ด์์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ๊ฐ๋น์ง ์ฝ๋ ํฐ์ ์ํด ์ฒ๋ฆฌ๋๋ฉฐ, ๊ฐ๋น์ง ์ฝ๋ ํฐ๋ ๋ ์ด์ ์ฐธ์กฐ๋์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋์ผ๋ก ํ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ํ๊ฒฝ์์๋ ๊ฐ์ฒด๊ฐ ์ฌ์ ํ ์ค์๋ก ์ฐธ์กฐ๋์ด ๊ฐ๋น์ง ์ฝ๋ ํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๋์์ ์์ธ
๋ฉ๋ชจ๋ฆฌ ๋์๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ๊ฐ์ฅ ๋ง์ฐํ๊ณ ์๋ฐํ ๋ฌธ์ ์ค ํ๋๋ก, ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ฑ๋ฅ์ ์กฐ์ฉํ ์ ํ์ํค๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ถ์์ ํ๊ฒ ๋ง๋ญ๋๋ค. ๊ทผ๋ณธ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๋์๋ ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ ํ ๋ ์ด์ ํ์ํ์ง ์์ ๋ฐ์ดํฐ๊ฐ ๋ฐํ๋์ง ์์ ๋ ๋ฐ์ํฉ๋๋ค. ์ถฉ๋์ด๋ ๋ช ๋ฐฑํ ๋ฒ๊ทธ์ ๋ฌ๋ฆฌ, ๋ฉ๋ชจ๋ฆฌ ๋์๋ ์ด๊ธฐ ํ ์คํธ ๋จ๊ณ์์๋ ๋ฐ๊ฒฌ๋์ง ์๊ณ ์ฅ๊ธฐ๊ฐ ์ฌ์ฉ ํ, ์ฆ ์ ํ๋ฆฌ์ผ์ด์ ์๋๊ฐ ๊ธ๊ฒฉํ ๋๋ ค์ง๊ฑฐ๋ ์์คํ ๋ฆฌ์์ค ๊ณ ๊ฐ๋ก ์ธํด ๊ฐ์๊ธฐ ์ข ๋ฃ๋ ๋๋ง ๋ํ๋ฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๋์์ ์ํฅ์ ์ฌ์ํ ๋นํจ์จ์ฑ๋ถํฐ ์น๋ช ์ ์ธ ์ค๋ฅ๊น์ง ๋ค์ํ๋ฉฐ, ํนํ ์๋ฒ, ์๋ฒ ๋๋ ๊ธฐ๊ธฐ, ๋ชจ๋ฐ์ผ ์ฑ๊ณผ ๊ฐ์ด ์ฅ๊ธฐ ์คํ ์์คํ ์์ ๋์ฑ ์ฌ๊ฐํฉ๋๋ค. ๊ทน๋จ์ ์ธ ๊ฒฝ์ฐ, ๋์๋ก ์ธํด ์์คํ ์ ์ฒด์ ์๋ ์ ํ๊ฐ ๋ฐ์ํ์ฌ ์ฌ์ฉ์๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ๋ณดํ๊ธฐ ์ํด ๊ธฐ๊ธฐ๋ ์๋น์ค๋ฅผ ์ฌ๋ถํ ํด์ผ ํ ์๋ ์์ต๋๋ค. ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋ Java๋ Python๊ณผ ๊ฐ์ ๊ฐ๋น์ง ์ปฌ๋ ํฐ ์ธ์ด์์๋ ๋ฏธ๋ฌํ ํ๋ก๊ทธ๋๋ฐ ์ค๋ฅ๋ก ์ธํด ์ฐธ์กฐ๊ฐ ์ค๋ ์ง์๋๊ฑฐ๋ ๋ซํ์ง ์์ ๋ฆฌ์์ค๊ฐ ๋์๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๋์์ ๊ทผ๋ณธ ์์ธ์ ์ดํดํ๋ ๊ฒ์ ๋ชจ๋ ์์ค์ ๊ฐ๋ฐ์์๊ฒ ํ์์ ์ ๋๋ค. ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ํ์ํ C++์ ๊ฐ์ ์ ์์ค ์ธ์ด๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ๊ธฐ๋ฅ์ด ์๋ ๊ณ ์์ค ์ธ์ด๋ , ํ๋ก๊ทธ๋๋จธ๋ ๋์๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฒด๊ณ์ ์ธ ๊ด๋ฆฌ ๋ฐฉ์์ ์ฑํํด์ผ ํฉ๋๋ค. ์ด ๊ธ์์๋ ๊ฐ์ฅ ํํ ๋ฉ๋ชจ๋ฆฌ ๋์ ์์ธ์ ์ดํด๋ณด๊ณ , ๋์๊ฐ ๋ฐ์ํ๋ ์์ธ๊ณผ ์ํ ์ ๋ต์ ๋ํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ํจ์ ์ ์ธ์งํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ๋์ฑ ํจ์จ์ ์ด๊ณ ์์ ์ ์ด๋ฉฐ ์ ์ง ๊ด๋ฆฌ๊ฐ ์ฉ์ดํ ์ฝ๋๋ฅผ ์์ฑํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์๋ช ์ฃผ๊ธฐ ์ ๋ฐ์ ๊ฑธ์ณ ์ต์ ์ ์ฑ๋ฅ์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ค๋ฅ
C ๋ฐ C++์ ๊ฐ์ ์ธ์ด์์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ์์ ํ ์๋์
๋๋ค. ์ฆ, ๋์ ์ผ๋ก ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ชจ๋ ๋ธ๋ก์ malloc, calloc๋ฐ new ๋ช
์์ ์ผ๋ก ํ ๋น ํด์ ๋์ด์ผ ํฉ๋๋ค. free or delete๋ฉ๋ชจ๋ฆฌ ๋์๋ ๊ฐ๋ฐ์๊ฐ ๋ ์ด์ ํ์ํ์ง ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๋ ๊ฒ์ ์์ ๋ ๋ฐ์ํฉ๋๋ค. ์ด๋ฌํ ๋๋ฝ์ ๋ณต์กํ ์ ์ด ํ๋ฆ, ์กฐ๊ธฐ ๋ฐํ ๋๋ ํ ๋น ํด์ ํธ์ถ์ ์ฐํํ๋ ์์ธ ์ฒ๋ฆฌ์์ ์ข
์ข
๋ฐ์ํฉ๋๋ค. ํ ๋น ํด์ ๋๋ฝ ์ธ์๋, ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๊ธฐ ์ ์ ํฌ์ธํฐ๋ฅผ ์๋ ๊ฒ๊ณผ ๊ฐ์ ๋ถ์ ์ ํ ์ฌํ ๋น์ ๋ณต๊ตฌํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ๋ก ์ด์ด์ง๋๋ค. ๋ ๋ค๋ฅธ ์ฃผ์ ํจ์ ์ ์ด๋ฏธ ํด์ ๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ํ ์ฐธ์กฐ์ธ dangling ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. ์ด๋ก ์ธํด ์ ์๋์ง ์์ ๋์์ด๋ ์ง๋จํ๊ธฐ ์ด๋ ค์ด ์ถฉ๋์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํํ ๋ ์๊ฒฉํ ๊ท์น๊ณผ ์ฝ๋ ๊ฒํ ํ์ค์ ๋ฐ๋ผ์ผ ํฉ๋๋ค. Valgrind, AddressSanitizer, Clang์ ๋ด์ฅ ๊ฒ์ฌ ๋๊ตฌ์ ๊ฐ์ ๋๊ตฌ๋ ํ ๋น์ ์ถ์ ํ๊ณ ๋ชจ๋ malloc or new ์์ํ๋ ๊ฒ์ ๊ฐ์ง๊ณ ์๋ค free or delete์ค์ํ ์์คํ
ํ๋ก๊ทธ๋๋ฐ์์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์ค๋ฅ๋ก ์ธํ ๋ฆฌ์์ค ๋์๋ ์ฑ๋ฅ์ ์ ํ์ํค๊ฑฐ๋ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ ํ๋ฆฌ์ผ์ด์
์ด ์์ธกํ ์ ์๊ฒ ๋์ํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
๋ฌด์ ํ ๋๋ ์ฆ๊ฐํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ
์ ์ ํ ์ ํ ์์ด ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ปค์ง๋ ์ปฌ๋ ์ ์ ํนํ ์ฅ๊ธฐ ์คํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฉ๋ชจ๋ฆฌ ๋์์ ์ผ๋ฐ์ ์ธ ์์ธ์ ๋๋ค. ๋ชฉ๋ก, ๋๊ธฐ์ด, ์ฌ์ , ์บ์์ ๊ฐ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ์์ ์ฒ๋ฆฌ ๋๋ ์กฐํ๋ฅผ ์ํด ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋ ๋ฐ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค. ์ด์ ํญ๋ชฉ์ด ์ ๊ฑฐ๋๊ฑฐ๋ ๋ง๋ฃ๋์ง ์์ผ๋ฉด ๋ฐ์ดํฐ๊ฐ ๋ ์ด์ ์ ํจํ์ง ์๊ฒ ๋ ํ์๋ ํด๋น ๊ตฌ์กฐ๋ ๊ณ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋นํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ก๊น ์์คํ ์ ๋ชจ๋ ๋ฉ์์ง๋ฅผ ์ง์์ง์ง ์๋ ๋ชฉ๋ก์ ์ถ๊ฐํ๊ฑฐ๋, ์บ์ฑ ๊ณ์ธต์ ๋ง๋ฃ ์ ๋ต ์์ด ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฌด๊ธฐํ ์ ์ฅํ ์ ์์ต๋๋ค. ๋์ฉ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ด๋ฌํ ๊ตฌ์กฐ๋ ์์ฒ ๋๋ ์๋ฐฑ๋ง ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๋ณด์ ํ ์ ๋๋ก ์ปค์ง ์ ์์ผ๋ฉฐ, ๊ฒฐ๊ตญ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ์ํฉ์ ์ด๋ํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ํ์ธ๋์ง ์๊ณ ์ปค์ง์ง ์๋๋ก ๊ฒฝ๊ณ, ์ ๋ฆฌ ๊ฐ๊ฒฉ ๋๋ ๊ฐ์ฅ ์ต๊ทผ์ ์ฌ์ฉ๋ ํญ๋ชฉ(LRU) ์ ๊ฑฐ ์ ์ฑ ์ ๊ตฌํํด์ผ ํฉ๋๋ค. ๊ฐ๋น์ง ์ปฌ๋ ์ ์ธ์ด์์ ์ด๋ฌํ ์ ํ์ ๋์๋ ๊ธฐ์ ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ ์์ง๋์ง ์๊ธฐ ๋๋ฌธ์ ํนํ ๊น๋ค๋กญ์ต๋๋ค. ์ปฌ๋ ์ ํฌ๊ธฐ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ์ค๋๋์๊ฑฐ๋ ์ฌ์ฉ๋์ง ์๋ ํญ๋ชฉ์ ์ ๋ฆฌํ๊ธฐ ์ํ ์ ์ด ๊ธฐ๋ฅ์ ๊ตฌ์ถํ๋ฉด ๊ฐ๋ฐ์ด๋ ์๊ท๋ชจ ํ ์คํธ ์ค์ ๋์ ๋์ง ์์ ์ ์๋ ๋๋ฆฐ ๋ฉ๋ชจ๋ฆฌ ์ฆ๊ฐ๋ฅผ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๊ฐ๋น์ง ์์ง ์ธ์ด์ ์ํ ์ฐธ์กฐ
Java, Python, JavaScript์ ๊ฐ์ด ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ง์ํ๋ ์ธ์ด๋ ๋๋ฌํ ์ ์๋ ๊ฐ์ฒด๋ฅผ ์๋์ผ๋ก ์ ๋ฆฌํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ๊ฐ์ํํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ํ ์ฐธ์กฐ๋ ๋ฏธ๋ฌํ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํฉ๋๋ค. ๋ ๊ฐ ์ด์์ ๊ฐ์ฒด๊ฐ ์๋ก๋ฅผ ์ฐธ์กฐํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๊ฒฝ์ฐ, ์ํธ ์ฐธ์กฐ๋ก ์ธํด ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ํด๋น ๊ฐ์ฒด๋ฅผ ์์ ํ๊ฒ ์ ๊ฑฐํ ์ ์๋ค๊ณ ํ๋จํ์ง ๋ชปํ๊ฒ ๋ฉ๋๋ค. ์ต์ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ ์ด๋ฌํ ์ํ์ ๊ฐ์งํ๋ ๊ธฐ๋ฅ์ ํฅ์์์ผฐ์ง๋ง, ๋ชจ๋ ํ๊ฒฝ์ด๋ ์ปฌ๋ ํฐ ์ ํ์ด ์ด๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ ์๋๋๋ค. ๋ํ, ์ด๋ฌํ ์ธ์ด์ ํด๋ก์ ๋ ๋๋ค๋ ์๋์น ์๊ฒ ๋ถ๋ชจ ๋ฒ์ ๋ณ์๋ฅผ ์บก์ฒํ์ฌ ๊ฐ์ฒด๊ฐ ์๋ํ ์๋ช ์ฃผ๊ธฐ๋ฅผ ์ด๊ณผํ์ฌ ๊ณ์ ์ด์์๊ฒ ํ ์ ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ ๋ฐ์ํ ํ๋ก๊ทธ๋๋ฐ, ์ด๋ฒคํธ ์์คํ ๋๋ ๊ธด๋ฐํ ๋ฃจํ๋ฅผ ํ์ฑํ๋ ๊ฐ์ฒด ๊ทธ๋ํ๋ฅผ ์ฌ์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์์ฃผ ๋ฐ์ํฉ๋๋ค. ์ฐธ์กฐ๋ฅผ null๋ก ์ฒ๋ฆฌํ๊ฑฐ๋ ์ฝํ ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ์ํ์ ์๋์ผ๋ก ๋๋ ๊ฒ์ด ๊ถ์ฅ๋ฉ๋๋ค. ์ผ๋ถ ์ธ์ด๋ ๊ฐ๋ ฅํ ์ฐธ์กฐ ์ฒด์ธ ํ์ฑ ์ํ์ ์ต์ํํ๋ ํน์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ์ปจํ ์คํธ ๊ด๋ฆฌ์๋ฅผ ์ ๊ณตํ๊ธฐ๋ ํฉ๋๋ค. ์ด๋ฌํ ์ธ๋ถ ์ฌํญ์ ๊ณ ๋ คํ์ง ์์ผ๋ฉด ์ํ ์ฐธ์กฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋์ผ๋ก ์ถ์ ํ์ฌ ์ฑ๋ฅ ์ ํ ๋ฐ ์ถ์ ํ๊ธฐ ์ด๋ ค์ด ๋์๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
๋ซํ์ง ์์ ๋ฆฌ์์ค
ํ์ผ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ, ๋คํธ์ํฌ ์์ผ ๋๋ ์คํธ๋ฆผ๊ณผ ๊ฐ์ ์์คํ
๋ฆฌ์์ค์ ์ํธ ์์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ด๋ฌํ ๋ฆฌ์์ค๊ฐ ๋ช
์์ ์ผ๋ก ํด์ ๋๋๋ก ํด์ผ ํฉ๋๋ค. ๊ฐ๋น์ง ์์ง์ด ๊ฐ๋ฅํ ์ผ๋ฐ ๊ฐ์ฒด์ ๋ฌ๋ฆฌ, ์ด๋ฌํ ๋ฆฌ์์ค๋ ์ด์ ์ฒด์ ํธ๋ค์ ์ข
์๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ฉฐ ์๋ ๋๋ ์ฒด๊ณ์ ์ธ ์ ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค. ํ์ผ์ด ์ด๋ฆฌ์ง๋ง ๋ซํ์ง ์๊ฑฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ด ์ค๋จ๋ ์ํ๋ก ์ ์ง๋๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ชจํ ๋ฟ๋ง ์๋๋ผ ํ์ผ ์ค๋ช
์, ์์ผ ์ฐ๊ฒฐ ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ฌ๋กฏ์ ์์ฝํฉ๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ํ์ผ ํธ๋ค ๊ณ ๊ฐ ๋๋ ์ฐ๊ฒฐ ํ ์ฐจ๋จ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ์ต์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ์ข
์ข
๋ค์๊ณผ ๊ฐ์ ๊ตฌ๋ฌธ์ ์ ๊ณตํฉ๋๋ค. try-with-resources ์๋ฐ์์, using C#์์๋ ์์ธ ๋ฐ์ ์์๋ ๋ฆฌ์์ค๊ฐ ๋ซํ๋๋ก ๋ณด์ฅํ๋ ์ปจํ
์คํธ ๊ด๋ฆฌ์๋ฅผ, Python์์๋ ์ปจํ
์คํธ ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฌํ ๊ตฌ๋ฌธ์ ๋ฌด์ํ๊ฑฐ๋ ์ฐํํ๋ ๊ฐ๋ฐ์๋ ๋์ ๋์ง ์์ง๋ง ์น๋ช
์ ์ธ ๋ฆฌ์์ค ๋์๋ฅผ ์ ๋ฐํ ์ํ์ด ์์ต๋๋ค. ๋๊ท๋ชจ ์์คํ
์์๋ ๋ซํ์ง ์์ ๋ฆฌ์์ค์ ์์ ๋ถ๋ถ์ด๋ผ๋ ์์คํ
์ ์ฒด์ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์์ผ๋ฉฐ, ํนํ ์ ํ๋ฆฌ์ผ์ด์
์ด ๋์ ๋ถํ์ ๋ฐ๋ผ ํ์ฅ๋ ๋ ๋์ฑ ๊ทธ๋ ์ต๋๋ค. ๋ฆฌ์์ค๋ฅผ ์์ ์ ์ผ๋ก ์ถ์ ํ๊ณ ๋ซ๋ ๊ฒ์ ๋ชจ๋ ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ์์ ๊ธฐ๋ณธ์ ์ธ ๊ดํ์ด์ด์ผ ํฉ๋๋ค.
์ ์ ๋ฐ ์ ์ญ ๋ณ์
์ ์ ๋ณ์์ ์ ์ญ ๋ณ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์๋ช ์ฃผ๊ธฐ ๋์ ์ ์ง๋๋๋ก ์ค๊ณ๋์ด ์ ์คํ๊ฒ ๊ด๋ฆฌํ์ง ์์ผ๋ฉด ๋ณธ์ง์ ์ผ๋ก ์ํํฉ๋๋ค. ์ด๋ฌํ ๋ณ์๊ฐ ๋์ฉ๋ ๊ฐ์ฒด, ์์ ๋ฐ์ดํฐ, UI ๊ตฌ์ฑ ์์ ๋๋ ์ธ์ ๋ณ ์ ๋ณด์ ๋ํ ์ฐธ์กฐ๋ฅผ ํฌํจํ๋ ๊ฒฝ์ฐ, ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ํด๋น ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ ์ด์ ์ ์ฉํ์ง ์๋๋ผ๋ ํด๋น ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ์ง์์ง์ง ์๋ ์ ์ ์บ์๋ ์ด์ ๊ฒฐ๊ณผ๋ฅผ ๋ฌด๊ธฐํ์ผ๋ก ์ ์งํ๋ ์ ์ญ ์๋น์ค๋ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์ํ ๋ ๋ง์ด ์๋นํฉ๋๋ค. ์ด ๋ฌธ์ ๋ ํนํ ์ฌ์ฉ์ ์ธ์ , ํธ๋์ญ์ ๋๋ ๋ค์ํ ์ปจํ ์คํธ๊ฐ ๋ฐ๋ณต์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ ์ผ๊ด ์์ ์ ์ฒ๋ฆฌํ๋ ์์คํ ์์ ๋ฌธ์ ๊ฐ ๋ฉ๋๋ค. ์ ์ ํ๋๊ฐ ๊ฐ ์ธ์คํด์ค์ ์ํ๋ฅผ ๋์ ํ๊ณ ์ฌ์ค์ ํ์ง ์์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ฌ์ฉ๋์ ๋ฐ๋ผ ์ฆ๊ฐํฉ๋๋ค. ๊ฐ๋ฐ์๋ ์ ์ ๋ณ์ ์ฌ์ฉ์ ์ ํ๋ฆฌ์ผ์ด์ ์๋ช ์ฃผ๊ธฐ ์ ์ฒด์์ ๊ด๋ จ์ฑ์ด ๋ณด์ฅ๋๋ ์์ ๋๋ ์๊ท๋ชจ ์ ํธ๋ฆฌํฐ๋ก ์ ํํด์ผ ํฉ๋๋ค. ์๊ตฌ ์ ์ฅ์๊ฐ ํ์ํ ๊ฒฝ์ฐ, ์ ์ฅ๋ ๊ฐ์ ์ฃผ๊ธฐ์ ์ผ๋ก ์ญ์ ํ๊ฑฐ๋ ๋ฌดํจํํ๋ ๋ฉ์ปค๋์ฆ์ ๊ตฌํํด์ผ ํฉ๋๋ค. ์ ๊ธฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ฌ ๋ฐ ํ๋กํ์ผ๋ง์ ๋ถ์ ์ ํ๊ฒ ๋ฒ์๊ฐ ์ง์ ๋ ์ ์ ์ฐธ์กฐ๋ก ์ธํด ๋ฐ์ํ๋ ์๊ธฐ์น ์์ ๋ฉ๋ชจ๋ฆฌ ์ฆ๊ฐ๋ฅผ ํ์ ํ๋ ๋ฐ์๋ ๋์์ด ๋ ์ ์์ต๋๋ค.
์ค๋ ๋ ๊ด๋ จ ๋์
๋ฉํฐ์ค๋ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ์์ด ๊ณ ์ ํ ๊ณผ์ ๋ฅผ ์๊ฒจ์ฃผ๋๋ฐ, ํนํ ์ค๋ ๋ ๋ก์ปฌ ์ ์ฅ์์ ์ฅ๊ธฐ ์คํ ์ค๋ ๋์ ๊ด๋ จ๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ฐ์ดํฐ๊ฐ ์ค๋ ๋ ๋ก์ปฌ ๋ณ์์ ์ ์ฅ๋์ง๋ง ์ญ์ ๋์ง ์์ผ๋ฉด, ํด๋น ๋ฐ์ดํฐ๋ ์กด์ฌํ๋ ๋์ ์ค๋ ๋์ ์ฐ๊ฒฐ๋ ์ํ๋ก ์ ์ง๋ฉ๋๋ค. ์ค๋ ๋๊ฐ ํ์ ์ด์์ผ๋ก ์ค๋ ์ง์๋๊ฑฐ๋ ์ค๋ ๋ ํ์์ ๋ฌดํ์ ์ฌ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ, ์ด๋ ๋ฉ๋ชจ๋ฆฌ ๋์๋ก ์ด์ด์ง๋๋ค. ๋ํ, ์ฐจ๋จ๋๊ฑฐ๋, ํด๋ฉด ์ํ์ด๊ฑฐ๋, ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋๋ ํ์ํ ์์ ์ดํ์๋ ๊ฐ์ฒด๋ฅผ ์ค๋ซ๋์ ๋ณด๊ดํ ์ ์์ต๋๋ค. ์ค๋ ๋๊ฐ ์์ฒญ ๊ฐ์ฒด๋ ์์ ๋ฒํผ์ ๊ฐ์ด ์์๋ก ์ ์ง๋์ด์ผ ํ ํด๋์ค๋ฅผ ์ฐธ์กฐํ๋ ๊ฒฝ์ฐ, ์ค๋ ๋๊ฐ ์ข ๋ฃ๋ ๋๊น์ง ํด๋น ํด๋์ค๋ฅผ ์์งํ ์ ์์ต๋๋ค. ์ค๋ ๋๊ฐ ์ ๋๋ก ๊ด๋ฆฌ๋์ง ์๊ฑฐ๋ ๋ฒ๋ ค์ง๋ ๊ฒฝ์ฐ, ์ด๋ฌํ ๋์๋ ์กฐ์ฉํ ์ง์๋๋ฉฐ ์์คํ ๊ท๋ชจ๊ฐ ์ปค์ง์ ๋ฐ๋ผ ์ฆ๊ฐํฉ๋๋ค. ์ค๋ ๋ ๋ก์ปฌ ๋ณ์๋ฅผ ๋ช ์์ ์ผ๋ก ์ ๋ฆฌํ๊ณ , ์ฅ๊ธฐ ์คํ ์ค๋ ๋๊ฐ ๋ถํ์ํ ์ฐธ์กฐ๋ฅผ ํด์ ํ๋๋ก ํ๊ณ , ์์ ๊ฐ์ ์ปจํ ์คํธ๋ฅผ ์ฌ์ค์ ํ๋๋ก ์์ ์ ์ค๋ ๋๋ฅผ ์ค๊ณํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค. ๋ํ ์ ํด ์ค๋ ๋๊ฐ ์์๋ณด๋ค ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ ํ๋ ๊ฒฝ์ฐ๋ฅผ ๊ฐ์งํ๊ธฐ ์ํด ์ค๋ ๋ ํ์ ํฌ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๋ชจ๋ํฐ๋งํด์ผ ํฉ๋๋ค.
ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฌธ์
๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ์ฌ์ฉ์ ์ฝ๋์์ ๋ฐ์ํ๋ ๊ฒ์ ์๋๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ, ํนํ ๊ทธ๋ํฝ, ์ค๋์ค ๋๋ ์ธ๋ถ ํ๋์จ์ด์ ์ธํฐํ์ด์คํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ๋ ์์ฒด์ ์ธ ๋์๋ฅผ ํฌํจํ๊ฑฐ๋ ๋ช
์์ ์ธ ์ ๋ฆฌ๊ฐ ํ์ํ API๋ฅผ ๋
ธ์ถํ ์ ์์ต๋๋ค. ์ด๋ฌํ API๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ์ง ์์ผ๋ฉด(์: dispose() or shutdown() ๋ฉ์๋์์ ๊ด๋ฆฌํ๋ ๋ฆฌ์์ค๋ ํ ๋น๋ ์ํ๋ก ์ ์ง๋ฉ๋๋ค. ์ด๋ ํนํ ์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ณต์ก์ฑ์ ์ถ์ํํ์ง๋ง ์๋ช
์ฃผ๊ธฐ ์๊ตฌ ์ฌํญ์ ์ ๋๋ก ๋ฌธ์ํํ์ง ์๋ ์ต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ํํ ๋ฐ์ํฉ๋๋ค. ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์์ฒด ์บ์ฑ ๋๋ ๋ฆฌ์์ค ํ๋ง ์ ๋ต์ ๊ตฌํํ์ฌ ์์๋ณด๋ค ์ค๋ซ๋์ ๊ฐ์ฒด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ณด๊ดํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์บ์๋ ์กฐ์ ๊ฐ๋ฅํ๊ฑฐ๋ ์์ ํ ๋ถํฌ๋ช
ํ ์ ์์ต๋๋ค. ๋ํ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์
๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๊ฐ ์๋์น ์๊ฒ ์ ์ง๋ ์ ์์ต๋๋ค(์: ์ ๊ฑฐ๋์ง ์๋ ์ฝ๋ฐฑ ๋ฑ๋ก). ์ด๋ก ์ธํด ๊ฐ์ฒด๊ฐ ์์ง๋์ง ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ํฌํจํ๋ ๋ชจ๋ ํ์ฌ ์ฝ๋์ ๋ฌธ์๋ฅผ ์ฃผ์ ๊น๊ฒ ๊ฒํ ํ๊ณ ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๋ชจ๋ํฐ๋งํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ธํ ๋์๋ฅผ ๊ฐ์งํด์ผ ํฉ๋๋ค. ๋ถํ๊ฐ ๊ฑธ๋ฆฐ ์ํ์์ ํ์ฌ ํตํฉ์ ํ
์คํธํ๊ฑฐ๋ ํ๋กํ์ผ๋ง ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์ด์ ์ฒด์ ๊ฐ ๋์๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค
๋ฉ๋ชจ๋ฆฌ ๋์๋ ํ ํ ๋น์๋ง ๊ตญํ๋์ง ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์
์ ํ์ผ ์ค๋ช
์, GUI ํธ๋ค, ์์ผ, ์ธ๋งํฌ์ด์ ๊ฐ์ ์ด์ ์ฒด์ ํธ๋ค์๋ ํฌ๊ฒ ์์กดํฉ๋๋ค. ์ด๋ฌํ ๊ฐ ๋ฆฌ์์ค์๋ ์์คํ
์์ค์์ ์ ํํ ์ ํ์ด ์์ต๋๋ค. ํธ๋ค์ด ์ ๋๋ก ๋ซํ์ง ์์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒ์ฒ๋ผ ๋ณด์ด๋๋ผ๋ ๊ฒฐ๊ตญ ์์คํ
์ ๋ฆฌ์์ค๊ฐ ๋ถ์กฑํด์ง๋๋ค. ์๋ฅผ ๋ค์ด, Linux์์ ํ์ผ ์ค๋ช
์๋ฅผ ๋ซ์ง ์์ผ๋ฉด "์ด๋ฆฐ ํ์ผ์ด ๋๋ฌด ๋ง์ต๋๋ค"์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ ์๋น์ค๊ฐ ์๊ธฐ์น ์๊ฒ ์ค๋จ๋ ์ ์์ต๋๋ค. Windows ํ๊ฒฝ์์๋ ๋์๋ ๊ทธ๋ํฝ ์ฅ์น ์ธํฐํ์ด์ค(GDI) ํธ๋ค๋ก ์ธํด ์ ์ฐฝ์ด๋ UI ์์๊ฐ ๋ ๋๋ง๋์ง ์์ ์ ์์ต๋๋ค. ํธ๋ค ๋์๋ ๊ธฐ์กด ๋ฉ๋ชจ๋ฆฌ ํ๋กํ์ผ๋ฌ์์๋ ๋ํ๋์ง ์์ ์ ์์ผ๋ฏ๋ก ์ง๋จํ๊ธฐ๊ฐ ํนํ ์ด๋ ต์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ํ๋ซํผ๋ณ ๋ชจ๋ํฐ๋ง ๋๊ตฌ๊ฐ ์์ต๋๋ค. lsof Unix ๋๋ Windows ์์
๊ด๋ฆฌ์์์ ๋น์ ์์ ์ธ ํธ๋ค ์ฌ์ฉ์ ๋ฐ๊ฒฌํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ๋ฆฌ์์ค ์ฒ๋ฆฌ ๋ฃจํด์ ์ ์คํ๊ฒ ๊ฐ์ฌํ๊ณ ๋ชจ๋ ํ ๋น์ ์์ํ๋ ํด์ ๊ฐ ์ด๋ฃจ์ด์ง๋๋ก ํด์ผ ํฉ๋๋ค. RAII ํจํด์ด๋ ๋ฒ์๊ฐ ์ง์ ๋ ๋ฆฌ์์ค ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ๋ฉด ๊ณ ์์ค ๋ฐ ์ ์์ค ์์คํ
๋ชจ๋์์ ์ฌ๋ฐ๋ฅธ ๋์์ ๊ฐ์ ํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
์ด๋ฒคํธ ๊ตฌ๋ ๋ฐ ์ฝ๋ฐฑ
์ด๋ฒคํธ ๊ธฐ๋ฐ ์์คํ ์ ๊ตฌ์ฑ ์์๊ฐ ์ด๋ฒคํธ์ ๋ฑ๋ก๋์ง๋ง ๋ฑ๋ก ํด์ ๋์ง ์์ ๋ ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ์ต๋๋ค. ํนํ UI ํ๋ ์์ํฌ, ๋ฉ์์ง ๋ฒ์ค, ๋ฐ์ํ ํ์ดํ๋ผ์ธ๊ณผ ๊ฐ์ด ์ค๋ซ๋์ ์ด๋ฒคํธ ํผ๋ธ๋ฆฌ์ ๋ฅผ ์ฌ์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ทธ๋ ์ต๋๋ค. ๋ฆฌ์ค๋๊ฐ ๋ฑ๋ก๋๊ณ ์ ๊ฑฐ๋์ง ์์ผ๋ฉด ํผ๋ธ๋ฆฌ์ ๋ ํด๋น ๋ฆฌ์ค๋์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ์งํ์ฌ ์ ์ฒด ๊ฐ์ฒด ๊ทธ๋ํ๋ฅผ ์ ์งํฉ๋๋ค. ์๋ฅผ ๋ค์ด, UI ์์ ฏ์ด ๊ณต์ ๋ชจ๋ธ์ ์ ๋ฐ์ดํธ๋ฅผ ์์ ํ์ง๋ง ํ๋ฉด์์ ์ ๊ฑฐ๋ ๋ ๋ฑ๋ก ํด์ ๋์ง ์์ผ๋ฉด ์์ ฏ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ง๋ฉ๋๋ค. JavaScript ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ ์ญ ์ด๋ฒคํธ์ ์ฐ๊ฒฐ๋ DOM ๋ ธ๋๋ ๋ ธ๋๊ฐ ์๊ฐ์ ์ผ๋ก ์ ๊ฑฐ๋์ง๋ง ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ๋ถ๋ฆฌ๋์ง ์์ ๋ ๋ฉ๋ชจ๋ฆฌ ๋์์ ์์ธ์ด ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ํด๊ฒฐ์ฑ ์ ๋์นญ์ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ์ ์์ต๋๋ค. ๋ชจ๋ ๋ฑ๋ก์ ๋ช ์์ ์ธ ๋ฑ๋ก ํด์ ์ ํจ๊ป ์ํ๋์ด์ผ ํฉ๋๋ค. ์ผ๋ถ ํ๋ ์์ํฌ๋ ๊ฐ๋ฐ์์ ๋ถ๋ด์ ์ต์ํํ๊ธฐ ์ํด ์ฝํ ์ด๋ฒคํธ ํจํด์ด๋ ์๋ ์ ๋ฆฌ ํํฌ๋ฅผ ์ง์ํฉ๋๋ค. ํ์ง๋ง ์ด๋ฌํ ๊ฒ๋ค์๋ง ์์กดํ๋ ๊ฒ์ ํด์ฒด ๊ณผ์ ์์ ๋์์ ํ์ธํ์ง ์๋ ํ ์ํํฉ๋๋ค. ์ฝ๋ ๊ฒํ ๋ฐ ํ ์คํธ์๋ ์ด๋ฒคํธ ๊ตฌ๋ ์ด ์ ๋๋ก ์ข ๋ฃ๋๋์ง ํ์ธํ๋ ๊ฒ์ด ํญ์ ํฌํจ๋์ด์ผ ํฉ๋๋ค.
C++ ์ค๋งํธ ํฌ์ธํฐ ์ค์ฉ
C++ ์ค๋งํธ ํฌ์ธํฐ์ ๊ฐ์ unique_ptr, shared_ptr์์ฐ ๋ฐ weak_ptr ์๋ํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํ ๊ฐ๋ ฅํ ๋๊ตฌ์ด์ง๋ง, ์๋ชป ์ฌ์ฉํ๋ฉด ๋ฏธ๋ฌํ ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ธ ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. shared_ptr ์ธ์คํด์ค๋ ์ํ ์ฐธ์กฐ๋ฅผ ํ์ฑํฉ๋๋ค. ๊ณต์ ํฌ์ธํฐ๋ ์ฐธ์กฐ ํ์๋ฅผ ์ฌ์ฉํ์ฌ ์๋ช
์ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์, ๊ณต์ ์์ ๊ถ์ผ๋ก ์๋ก๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด๋ ์ฐธ์กฐ ํ์๊ฐ 0์ด ๋์ง ์์ ํ ๋น ํด์ ๊ฐ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ์ด ๋ฌธ์ ๋ ๋ถ๋ชจ-์์ ๊ตฌ์กฐ๋ ์๋ฐฉํฅ ๊ด๊ณ์์ ์์ฃผ ๋ฐ์ํฉ๋๋ค. ๊ฐ๋ฐ์๋ ๋ค์์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. weak_ptr ์ํ์ ๋๊ณ ์ ์ ํ ์ ๋ฆฌ๋ฅผ ์ํด ํ ๋ฐฉํฅ์ผ๋ก๋ง ์ฌ์ฉํฉ๋๋ค. ๋ ๋ค๋ฅธ ๋ฌธ์ ๋ ์์ ํฌ์ธํฐ์ ์ค๋งํธ ํฌ์ธํฐ๋ฅผ ํผํฉํ๋ ๊ฒ์
๋๋ค. ์ ์คํ๊ฒ ๊ด๋ฆฌ๋์ง ์๋ ์ฐธ์กฐ๋ฅผ ๋ณด๊ดํ๋ ๋ฐ ์์ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์ค๋งํธ ํฌ์ธํฐ์ ์ด์ ์ด ๊ฐ์ํฉ๋๋ค. ์ผ๋ถ ๊ฐ๋ฐ์๋ ์ค์๋ก ๊ฐ์ฒด๋ฅผ ํ ๋นํ ๋ new ์ค๋งํธ ํฌ์ธํฐ๋ก ๊ฐ์ธ๋ ๊ฒ์ ์์ด๋ฒ๋ ค ์์ ๊ถ ์ถ์ ์ด ๋ถ๊ฐ๋ฅํด์ง๋๋ค. RAII(Resource Acquisition Is Initialization) ์์น์ ๋ฐ๋ฅด๋ ๊ฒ์ ๋ฆฌ์์ค๊ฐ ์์ธก ๊ฐ๋ฅํ๊ฒ ํด์ ๋๋๋ก ํ๋ ๋ฐ ํ์์ ์
๋๋ค. ์ค๋งํธ ํฌ์ธํฐ ์์ ๊ถ์ ์ผ๋์ ๋๊ณ ์ค๊ณํ๊ณ ํ์ด๋ธ๋ฆฌ๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ชจ๋ธ์ ํผํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ์ต์ C++ ์ฝ๋์์ ๋์ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ ํฌ๊ฒ ์ค์ผ ์ ์์ต๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๋์ ๊ฐ์ง
๋ฉ๋ชจ๋ฆฌ ๋์๋ ๋๋ฆฌ๊ฒ ๋ฐ์ํ๊ณ ํญ์ ์ฆ๊ฐ์ ์ธ ์ค๋ฅ๋ฅผ ์ ๋ฐํ๋ ๊ฒ์ ์๋๊ธฐ ๋๋ฌธ์ ์ข ์ข ๋ฐ๊ฒฌํ๊ธฐ ์ด๋ ต์ต๋๋ค. ์ถฉ๋์ด๋ ๊ตฌ๋ฌธ ๋ฒ๊ทธ์ ๋ฌ๋ฆฌ, ๋์๋ ํนํ ์ง์์ ์ธ ์์ ๋ถํ๋ ๋์ ๋์์ฑ์ ๊ฐ์ง ์์คํ ์์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ ์๊ฐ์ด ๋ช ์๊ฐ ๋๋ ๋ฉฐ์น ์ด ์ง๋ ํ์์ผ ๋ํ๋ ์ ์์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๊ฐ์งํ๋ ค๋ฉด ๊ด์ฐฐ, ๊ณ์ธก, ๊ทธ๋ฆฌ๊ณ ๋๊ตฌ ์ฌ์ฉ์ด ๋ชจ๋ ํ์ํฉ๋๋ค. ์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์๋ณํ๋ ์ค์ฉ์ ์ด๊ณ ํจ๊ณผ์ ์ธ ์ ๋ต์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ๋ชจ๋ํฐ๋ง
๋ฉ๋ชจ๋ฆฌ ๋์์ ์ฒซ ์งํ ์ค ํ๋๋ ์ ์ ์๋ ์ค ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ง์์ ์ผ๋ก ์ฆ๊ฐํ๋ ๊ฒ์
๋๋ค. ์ด๋ Windows์ ์์
๊ด๋ฆฌ์์ ๊ฐ์ ๊ฐ๋จํ ์์คํ
๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ธํ ์ ์์ต๋๋ค. top or htop Linux ๋๋ Kubernetes ํ๊ฒฝ์ ์ปจํ
์ด๋ ์ค์ผ์คํธ๋ ์ด์
๋์๋ณด๋์์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ํ์ธํ ์ ์์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ํฌ๋ก๋์ ๋ฐ๋ผ ๋ณ๋ํ์ง๋ง ๊ฒฐ๊ตญ์๋ ์์ ํ๋ฉ๋๋ค. ํนํ ์ ํด ์๊ฐ์ด๋ ๋ฐ๋ณต์ ์ธ ์์
ํ์ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๊ณ์ํด์ ์ฆ๊ฐํ๋ค๋ฉด ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ ๋๋ก ํด์ ๋์ง ์๊ณ ์์์ ๋ํ๋ด๋ ๊ฐ๋ ฅํ ์งํ์
๋๋ค. ์ด์ ์์คํ
์์๋ ์์คํ
๋ฉํธ๋ฆญ์ด๋ ์ธํ๋ผ ๋ชจ๋ํฐ๋ง ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ๊ทธ๋ํ๋ฅผ ์ถ์ ํ ์ ์์ต๋๋ค. ์ฌ์ฉ๋ ๊ธ์ฆ๊ณผ ํน์ ์ ํ๋ฆฌ์ผ์ด์
์ด๋ฒคํธ ๋๋ ์ฌ์ฉ์ ์ํธ์์ฉ์ ์๊ด๊ด๊ณ๋ฅผ ํ์
ํ๋ฉด ๋์์ ์์ธ์ ํ์
ํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ์ ๊ธฐ์ ์ธ ๋ชจ๋ํฐ๋ง์ ํตํ ์กฐ๊ธฐ ๊ฐ์ง๋ ์ถฉ๋ ๋ฐ ์ฑ๋ฅ ์ ํ๋ฅผ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
ํ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ํ๋กํ์ผ๋ฌ ์ฌ์ฉ
ํ ํ๋กํ์ผ๋ฌ๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์๊ฐํํ๊ณ ์ ํ๋ฆฌ์ผ์ด์
์์ ์ด๋ค ๊ฐ์ฒด๊ฐ ๊ณต๊ฐ์ ์ฐจ์งํ๋์ง ํ์
ํ๋ ๋ฐ ํ์์ ์ธ ๋๊ตฌ์
๋๋ค. ์ด ๋๊ตฌ๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์ฌ๋ฌ ์์ ์ ๋ฉ๋ชจ๋ฆฌ ์ค๋
์ท์ ์ดฌ์ํ ํ, ์ด๋ฅผ ๋น๊ตํ์ฌ ํด์ ๋์ง ์๊ณ ์ฆ๊ฐํ๋ ๊ฐ์ฒด๋ฅผ ๊ฐ์งํ ์ ์์ต๋๋ค. Java์์๋ VisualVM๊ณผ Eclipse Memory Analyzer๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. .NET ๊ฐ๋ฐ์๋ dotMemory ๋๋ CLR Profiler๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ณ , C/C++ ์ ํ๋ฆฌ์ผ์ด์
์์๋ Valgrind ๋๋ AddressSanitizer๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. Python์์๋ ๋ค์๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. objgraph memory_profilerํ ํ๋กํ์ผ๋ฌ๋ ์ฐธ์กฐ ์ฒด์ธ, ์ ์ง๋๋ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ, ํ ๋น ํธ๋ฆฌ๋ฅผ ํ์ํ์ฌ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ด๋ป๊ฒ ์ ์ง๋๋์ง ์ถ์ ํ๋ ๋ฐ ๋์์ ์ค๋๋ค. ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฒฝ์ฐ, ์ค๋
์ท์ ํํฐ๋ง ๋ฐ ๊ทธ๋ฃนํ ๋ก์ง๊ณผ ๊ฒฐํฉํ๋ฉด ๋ฌธ์ ๊ฐ ์๋ ์์ญ์ ํ์
ํ ์ ์์ต๋๋ค. ํ๋กํ์ผ๋ฌ๋ฅผ ๋ผ์ด๋ธ ๋๋ฒ๊น
๊ณผ ํจ๊ป ์ฌ์ฉํ๋ฉด ์์๋ณด๋ค ์ค๋ ๋ฉ๋ชจ๋ฆฌ์ ๋จธ๋ฌด๋ฅด๋ ๊ฐ์ฒด๋ฅผ ์ค์๊ฐ์ผ๋ก ์กฐ์ฌํ ์ ์์ต๋๋ค. ์ด๋ฌํ ํต์ฐฐ๋ ฅ์ ๊ธฐ์กด ๋ก๊ทธ๋ ์์คํ
๋ฉํธ๋ฆญ์ผ๋ก๋ ํ์
ํ๊ธฐ ์ด๋ ค์ด ๋๋ฆฐ ๋์๋ฅผ ์ง๋จํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
๋ก๊ทธ ๊ฐ์ฒด ๋ฐ ์ปฌ๋ ์ ์ฑ์ฅ
์ฃผ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋๋ ๊ฐ์ฒด ํ์ ํฌ๊ธฐ๋ฅผ ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ผ ๋ก๊น ํ๋ ๊ฒ์ ๊ฐ๋ฐ ๋ฐ ํ ์คํธ ๊ณผ์ ์์ ๋์๋ฅผ ๊ฐ์งํ๋ ๊ฐ๋ณ์ง๋ง ๊ฐ๋ ฅํ ๊ธฐ์ ์ ๋๋ค. ๊ฐ๋ฐ์๋ ์ฝ๋์ ๊ณ์ธก์ ์ถ๊ฐํ์ฌ ๋ชฉ๋ก, ๋งต, ํ ๋๋ ์ธ์ ๋ ์ง์คํธ๋ฆฌ์ ๊ฐ์ ์ปฌ๋ ์ ์ ๊ธธ์ด๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ณด๊ณ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ์ผ์์ ์ผ๋ก ์ฆ๊ฐํ๋ค๊ฐ ๋ค์ ๊ฐ์ํ ๊ฒ์ผ๋ก ์์๋๋ ์๋๋ฆฌ์ค์์ ํฌ๊ธฐ๋ฅผ ๋ชจ๋ํฐ๋งํ๋ฉด ๊ธฐ์ค์ ์ผ๋ก ๋์๊ฐ๋์ง ์ฌ๋ถ๋ฅผ ํ์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฉ์์ง ํ๊ฐ ์์ ์ ์ฒ๋ฆฌํ์ง๋ง ๋ด๋ถ ๋ชฉ๋ก ํฌ๊ธฐ๊ฐ ์ค์ด๋ค์ง ์๋ ๊ฒฝ์ฐ, ๋ก์ง ๊ฐญ์ผ๋ก ์ธํด ๊ฐ์ฒด๊ฐ ๋์ ๋ ์ ์์ต๋๋ค. ์ด๋ ํ๋กํ์ผ๋ง์ด ๋ถ๊ฐ๋ฅํ๊ฑฐ๋ ํน์ ๊ธฐ๋ฅ ์์ญ์์ ๋์๊ฐ ์์ฌ๋ ๋ ํนํ ์ ์ฉํฉ๋๋ค. ์ด๋ฌํ ๋ก๊ทธ๋ฅผ ์์ ์คํ ๋๋ ์ฌ์ฉ์ ํ๋ฆ๊ณผ ํจ๊ป ํฌํจํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ๋น์ ์์ ์ธ ๊ฐ์ฒด ๋ณด์กด ํจํด์ ํ์ ํ ์ ์์ต๋๋ค. ์๋ํ๋ ์๊ณ๊ฐ ๊ฒ์ฌ๋ฅผ ์ถ๊ฐํ์ฌ ํ์ธ๋์ง ์์ ์ฆ๊ฐ๋ฅผ ๊ฐ์งํ๊ณ ๊ฒฝ๊ณ ํจ์ผ๋ก์จ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น๊ธฐ ์ ์ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์กฐ๊ธฐ์ ์ํํ ์ ์์ต๋๋ค.
๊ฐ๋น์ง ์์ง ๋์ ๋ถ์
Java, Python, C#๊ณผ ๊ฐ์ ๊ฐ๋น์ง ์ปฌ๋ ์
์ธ์ด๋ ๊ฐ๋น์ง ์ปฌ๋ ์
๋ก๊ทธ๋ฅผ ํตํด ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ์ ๋ํ ์ ์ฉํ ์งํ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์์คํ
์์ ์ต์ํ์ ๋ฉ๋ชจ๋ฆฌ ๋ณต๊ตฌ๋ง ์ด๋ฃจ์ด์ง๋ ๋น๋ฒํ GC ์ฌ์ดํด์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ, ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ฒด๊ฐ ๋ถํ์ํ๊ฒ ์ ์ง๋๊ณ ์๋ค๋ ์ ํธ์
๋๋ค. ์ด๋ฌํ ๋ก๊ทธ๋ฅผ ๋ถ์ํ๋ฉด ์ฃผ์ ์ปฌ๋ ์
๋ฐ์ ๋น๋, ํ์๋๋ ๋ฉ๋ชจ๋ฆฌ ์, ๊ทธ๋ฆฌ๊ณ ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ํ ์ฌ์ฉ๋ ๋ณํ๋ฅผ ํ์
ํ ์ ์์ต๋๋ค. Java์์๋ ๋ค์๊ณผ ๊ฐ์ ๋๊ตฌ๊ฐ ์์ต๋๋ค. GCViewer ๋๋ ๋ด์ฅ JVM ๋ก๊ทธ(-XX:+PrintGCDetails)๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ์ ์ฑ๋ฅ์ ๋ํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํฉ๋๋ค. ๊ณผ๋ํ GC ํ๋์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ ํ ์์ง๋์ง ์์๋๋ผ๋ ์ ํ๋ฆฌ์ผ์ด์
์ฑ๋ฅ์ ์ ํ์ํฌ ์ ์์ต๋๋ค. ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ์์ฃผ ์คํ๋์ง๋ง ๊ณต๊ฐ์ ํ๋ณดํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ, ๊ฐ๋ฐ์๋ ๊ฐ์ฒด ์ฐธ์กฐ ๋ฐ ํ ๋น ๊ฒฝ๋ก๋ฅผ ์กฐ์ฌํด์ผ ํฉ๋๋ค. Old Generation ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ฆ๊ฐ ๋ฐ ๊ธด GC ์ผ์ ์ค์ง ์๊ฐ๊ณผ ๊ฐ์ ํจํด์ ์์คํ
์ด ์์ง ์ฌ์ฉ ์ค์ด๋ผ๊ณ ์๋ชป ๊ฐ์ ํ๋ ์์ฌ ๊ฐ์ฒด๋ฅผ ๋ํ๋ด๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ฌํ ํจํด์ ์ ๊ธฐ์ ์ผ๋ก ๊ฒํ ํ๋ ๊ฒ์ ๊ด๋ฆฌํ ํ๊ฒฝ์์ ๋ฌด์ ๋ฉ๋ชจ๋ฆฌ ์ ์ง ํ์์ ๊ฐ์งํ๋ ํจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ์
๋๋ค.
ํธ๋ ํ ๋น ํซ์คํ
ํ๋กํ์ผ๋ง ๋๊ตฌ๋ ๊ฐ์ฅ ๋ง์ ๊ฐ์ฒด ํ ๋น์ ๋ด๋นํ๋ ํจ์๋ ๋ชจ๋์ ๊ฐ์กฐ ํ์ํ ์ ์์ต๋๋ค. ํ ๋น ํซ์คํ ์์ฒด๊ฐ ํญ์ ๋์์ธ ๊ฒ์ ์๋์ง๋ง, ํน์ ์์ญ์์ ์์ง๋์ง ์๋ ๋ง์ ์์ ๊ฐ์ฒด๋ฅผ ์ง์์ ์ผ๋ก ํ ๋นํ๋ ๊ฒฝ์ฐ ์ํ ์ ํธ๊ฐ ๋ฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ ํ๋กํ์ผ๋ฌ๋ ํ ๋น ํ์์ ํด๋น ํ ๋น์ผ๋ก ์ด์ด์ง๋ ์คํ ์ถ์ ์ ํ์ํ๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค. Java์ ๊ฐ์ ์ธ์ด์์๋ jmap JProfiler๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๊ฐ ์ด๋ค ํด๋์ค์ ๋ฉ์๋๊ฐ ๊ฐ์ฅ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋์ง ํ์
ํ ์ ์์ต๋๋ค. ๋ค์ดํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฒฝ์ฐ, Valgrind์ massif ๋๊ตฌ๋ ํ ๋น ํผํฌ๋ฅผ ์ถ์ ํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค. ์ด๋ฌํ ํซ์คํ์ ์ถ์ ํ๋ฉด ํ์ ๋ณ๋๋ฅ ์ด ๋์ ํจ์๋ ๋ฃจํ์ ์ค๊ณ๋ฅผ ๊ฒ์ฌํ ์ ์์ต๋๋ค. ํด๋ง ์ค๋ ๋ ๋ด์์ ํด๋น ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๋ฅผ ํด์ ํ์ง ์๊ณ ๋ฐ๋ณต์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ ์๋น์ค๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋๋ฆฌ๊ฒ ์ฆ๊ฐํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ์ด๋ฌํ ์ฝ๋ ๊ฒฝ๋ก๋ฅผ ์ต์ ํํ๊ฑฐ๋ ์ฌ๊ตฌ์ฑํ์ฌ ์์ ๊ฐ์ฒด๊ฐ ์ฉ๋๊ฐ ์๋ฃ๋ ํ ํด์ ๋๋๋ก ํ ์ ์์ต๋๋ค. ํซ์คํ์ ์กฐ๊ธฐ์ ํด๊ฒฐํ๋ฉด ์ฌ์ฉ์ ์ธ์
์ด๋ ์๋น์ค ์ฃผ๊ธฐ ์ ๋ฐ์ ๊ฑธ์ณ ๋์ ๋๊ธฐ ์ ์ ์ฅ๊ธฐ์ ์ธ ๋์๋ฅผ ์ต์ํํ ์ ์์ต๋๋ค.
๋ถํ ํ์์ ์ ํ๋ฆฌ์ผ์ด์ ๋์ ๊ด์ฐฐ
๋ถํ ํ ์คํธ๋ ์ผ๋ฐ์ ์ธ ๊ฐ๋ฐ ์ํฌ๋ก๋ ์๋์ ์จ๊ฒจ์ง ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์ฐพ์๋ด๋ ์ ๋ขฐํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๋์ ๋์์ฑ, ์ง์์ ์ธ ํธ๋ํฝ ๋๋ ๋ฐ๋ณต์ ์ธ ์ฌ์ฉ ํจํด์ ์๋ฎฌ๋ ์ด์ ํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํธ๋ ์ค ์ํฉ์์ ์ด๋ป๊ฒ ๋์ํ๋์ง ๊ด์ฐฐํ ์ ์์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ ๋์๋ ์ด๋ฌํ ์๋๋ฆฌ์ค์์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ฆ๊ฐ, ์๋ต ์๊ฐ ์ง์ฐ, ๊ทธ๋ฆฌ๊ณ ๊ฒฐ๊ตญ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ์ค๋ฅ๋ก ๋ํ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ถํ ํ ์คํธ ๊ฒฐ๊ณผ๋ ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ํฐ๋ง ๋ฐ ๋ก๊ทธ์ ํจ๊ป ์ฌ์ฉํ์ฌ ๋ถํ ์ดํ ๋ฆฌ์์ค ์ฌ์ฉ๋์ด ์์ ํ๋๋์ง ๋๋ ๊ณ์ ์ฆ๊ฐํ๋์ง ํ์ ํด์ผ ํฉ๋๋ค. JMeter, Locust, k6์ ๊ฐ์ ๋๊ตฌ๋ ๋ถํ ์๋ฎฌ๋ ์ด์ ์ ๋์์ด ๋๋ฉฐ, ์์คํ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ฉํธ๋ฆญ์ ํผ๋๋ฐฑ ๋ฃจํ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ํนํ ์ธ์ฆ ํ๋ฆ, ํ์ผ ์ฒ๋ฆฌ, ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ ๋๋ ์์ฒญ๋น ์คํ๋๋ ๋ชจ๋ ์ฝ๋ ๊ฒฝ๋ก์์ ๋์๋ฅผ ์๋ณํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค. ์คํ ์ด์ง ๋๋ ์ฌ์ ํ๋ก๋์ ํ๊ฒฝ์์ ๋ถํ ํ ์คํธ๋ฅผ ์ํํ๋ฉด ํ๋ก๋์ ํ๊ฒฝ์์ ๋ฐ์ํ ์ ์๋ ๋์๋ฅผ ๋ฐ๊ฒฌํ ์ ์์ต๋๋ค. ํ๋ก๋์ ํ๊ฒฝ์์๋ ํ์ง๊ฐ ๋ ์ํํ๊ณ ํด๊ฒฐ์ด ๋ ํฐ ์ค๋จ์ ์ด๋ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ค๋ ๋ ๋๋ ํธ๋ค ์ ๋ชจ๋ํฐ๋ง
๋ฉ๋ชจ๋ฆฌ ๋์๋ ๊ฐ์ฒด ํ ์ฌ์ฉ์๋ง ๊ตญํ๋์ง ์์ต๋๋ค. ์ค๋ ๋, ํ์ผ ์ค๋ช
์, ์์ผ, GUI ํธ๋ค๊ณผ ๊ฐ์ ์์คํ
์์ค ๋ฆฌ์์ค๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ชจํ๋ฏ๋ก ๋ช
์์ ์ผ๋ก ํด์ ํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ๋ฆฌ์์ค ๋์๋ OS ํ๊ณ๋ฅผ ์ด๊ณผํ์ฌ ์์คํ
๋ถ์์ ์ฑ์ด๋ ์ ํ๋ฆฌ์ผ์ด์
์ถฉ๋์ ์ด๋ํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ์ค๋ ๋ ํ, ์์ผ ์ํ, ์ด๋ฆฐ ํ์ผ ํธ๋ค์ ๋ชจ๋ํฐ๋งํ์ฌ ๋น์ ์์ ์ธ ์ ์ง๋ฅผ ๊ฐ์งํด์ผ ํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๋๊ตฌ๊ฐ ์์ต๋๋ค. lsof, netstat๋๋ ํ๋ซํผ๋ณ ๋ฆฌ์์ค ๋ชจ๋ํฐ๋ ๋ฐํ์์ ์ด๋ ค ์๋ ๋ฆฌ์์ค๋ฅผ ์ถ์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ ํ๋ฆฌ์ผ์ด์
์ด ์์
์ฒ๋ฆฌ๋ฅผ ์ํด ์ค๋ ๋๋ฅผ ์์ฑํ์ง๋ง ์ ๋๋ก ์ข
๋ฃํ์ง ์์ผ๋ฉด ์ค๋ ๋ ์์ ํจ๊ป ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ฆ๊ฐํฉ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, ๋ซํ์ง ์์ ํ์ผ์ด๋ ์์ผ์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๊ณ์ ์คํ๋์ด ์ ํด ์ํ์ผ ๋์๋ ์์คํ
์์ค์ ์ค๋ฒํค๋๋ฅผ ๋์ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ ํ์ ๋์๋ ์ฒ๋ฆฌ๋์ด ๋์ ์ฅ์๋ช
์๋น์ค์ ์๋ฒ์์ ํนํ ์ฌ๊ฐํฉ๋๋ค. ์ด๋ฌํ ๋ฆฌ์์ค์ ์ ์ ํ ์๋ช
์ฃผ๊ธฐ ๊ด๋ฆฌ์ ์๋ ์ ๋ฆฌ ๋ฐ ์ข
๋ฃ ํํฌ๋ฅผ ํตํด ์์คํ
๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ํ๊ณ ์์ ํ๊ฒ ํ์ํ ์ ์์ต๋๋ค.
APM ๋ฐ ๋ฐํ์ ๋ชจ๋ํฐ๋ง ๋๊ตฌ ์ฌ์ฉ
์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง(APM) ๋๊ตฌ๋ ๋ค์ํ ํ๊ฒฝ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋, ๊ฐ๋น์ง ์์ง ๋์, ๊ฐ์ฒด ์๋ช ์ ๋ํ ์ง์์ ์ธ ๊ฐ์์ฑ์ ์ ๊ณตํฉ๋๋ค. New Relic, Dynatrace, AppDynamics, Datadog์ ๊ฐ์ ์๋ฃจ์ ์ ๋ผ์ด๋ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ํตํฉ ๋ฉ๋ชจ๋ฆฌ ๋์๋ณด๋์ ์ด์ ํ์ง ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ํ๋ซํผ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์๊ณ๊ฐ์ ์ด๊ณผํ๊ฑฐ๋ ํน์ ์๋น์ค๊ฐ ๋ถํ ๋ฐ์ ์ ๋น์ ์์ ์ธ ๋์์ ๋ณด์ผ ๋ ํ์ ์๋ฆผ์ ๋ณด๋ผ ์ ์์ต๋๋ค. ์ผ๋ถ ๋๊ตฌ์๋ ๊ณผ๊ฑฐ ๋น๊ต ๋ฐ โโ๋ณด์กด ๋ถ์ ๊ธฐ๋ฅ์ด ํฌํจ๋์ด ์์ด ๋ฉ๋ชจ๋ฆฌ ์ถ์ธ์ ๋ฐฐํฌ ๋๋ ํธ๋ํฝ ๊ธ์ฆ ๊ฐ์ ์๊ด ๊ด๊ณ๋ฅผ ํ์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ํ๋กํ์ผ๋ง์ด ์ง๋์น๊ฒ ๋ฐฉํด๋๋ ์ด์ ํ๊ฒฝ์์ APM ๋๊ตฌ๋ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๋ฐ๊ฒฌํ๋ ์ฃผ์ ๋๊ตฌ ์ญํ ์ ํฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋ง์ ์์ฒญ์ ์ถ์ ํ๊ณ , ๋๋ฆฐ ์๋ํฌ์ธํธ๋ฅผ ์๋ณํ๊ณ , ์์๋ณด๋ค ์ค๋ซ๋์ ๊ฐ์ฒด๋ฅผ ์ ์งํ๋ ์๋น์ค๋ฅผ ํ์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๋ง์ APM ํ๋ซํผ์ ํ ๋คํ ํธ๋ฆฌ๊ฑฐ ๋๋ ๊ฐ์ฒด ์ํ๋ง์ ์ง์ํ์ฌ ๋ฐํ์ ์ฑ๋ฅ์ ์ํฅ์ ์ฃผ์ง ์์ผ๋ฉด์ ํ์ํ ์ง๋จ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ฐ๋ฐ ๋ผ์ดํ์ฌ์ดํด ์ด๊ธฐ์ APM ์๋ฃจ์ ์ ํตํฉํ๋ฉด ์ฌ์ ์๋ฐฉ์ ๋์ ํ์ง๊ฐ ๊ฐ๋ฅํ๊ณ ๋ฌธ์ ๋ฐ์ ์ ๊ทผ๋ณธ ์์ธ ๋ถ์์ ๊ฐ์ํํ ์ ์์ต๋๋ค.
์์ ์ ํ ๋ฉ๋ชจ๋ฆฌ ์ค๋ ์ท ๋น๊ต
๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๊ฐ์งํ๋ ๊ฐ๋จํ๋ฉด์๋ ํจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ์๋ช ์ฃผ๊ธฐ์ ์ฃผ์ ์์ , ์ฆ ์ฃผ์ ์์ ์คํ ์ ํ์ ๋ฉ๋ชจ๋ฆฌ ์ค๋ ์ท์ ์ฐ๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ์ ์ธ์ ์ ๋ก๋ํ๊ฑฐ๋, ๋์ฉ๋ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฒ๋ฆฌํ๊ฑฐ๋, ์ผ๊ด ์์ ์ ์คํํ๋ ๊ฒฝ์ฐ, ์์ ์ ๊ณผ ํ์ ํ ์ค๋ ์ท์ ํ๋์ฉ ์บก์ฒํ๋ฉด ์ด๋ค ๊ฐ์ฒด๊ฐ ์์ฑ๋์๊ณ ์ด๋ค ๊ฐ์ฒด๊ฐ ๋จ์ ์๋์ง ๋ถ์ํ ์ ์์ต๋๋ค. ์ด์์ ์ผ๋ก๋ ์์ ๊ฐ์ฒด๋ ์์ ์๋ฃ ํ ํด์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ช ํํ ์ด์ ์์ด ๋ง์ ์์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ ์ ๋ ๊ฒฝ์ฐ, ๊ฐ์ฒด๊ฐ ์๋์น ์๊ฒ ์ ์ ๋๊ณ ์์์ ๋ํ๋ผ ์ ์์ต๋๋ค. ํ ๋ถ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ค๋ ์ท์ ๋น๊ตํ๊ณ ์ด๋ค ๊ฐ์ฒด์ ๊ฐ์๋ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํ๋์ง ํ์ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ธํ ์ค์ฌ ์กฐ์ฌ๋ ํนํ ๋ถ๋ฆฌ๋ ๋ชจ๋์ด๋ ๊ธฐ๋ฅ์์ ๋์๋ฅผ ๋ฐ๊ฒฌํ๋ ๋ฐ ํจ๊ณผ์ ์ ๋๋ค. ๋ก๊ทธ, ๋ฉํธ๋ฆญ, ํ ๋น ์ถ์ ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ฉด ์ค๋ ์ท ๋น๊ต๋ฅผ ํตํด ๋ฉ๋ชจ๋ฆฌ ๋์์ ์์ธ์ด ๋๋ ์ฝ๋ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ์ ํ ์ ์์ต๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฐฉ์ง
๋ฉ๋ชจ๋ฆฌ ๋์๋ ๊ฐ์งํ๋ ๊ฒ๋งํผ ์๋ฐฉํ๋ ๊ฒ๋ ์ค์ํฉ๋๋ค. ๋๊ตฌ์ ์ง๋จ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋์๊ฐ ๋ฐ์ํ ํ์ ๋ฐ๊ฒฌํ ์ ์์ง๋ง, ๊ฒฌ๊ณ ํ ์ค๊ณ ๋ฐฉ์, ์ฒด๊ณ์ ์ธ ๋ฆฌ์์ค ๊ด๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ์ธ์ด๋ณ ๊ท์น์ ์ค์ํ๋ฉด ๋๋ถ๋ถ์ ๋์ ๋ฐ์์ ์ ์ด์ ์๋ฐฉํ ์ ์์ต๋๋ค. ์ฌ์ ์๋ฐฉ์ ๋๋ฒ๊น ์๊ฐ์ ๋จ์ถํ๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฑ์ ํฅ์์ํค๋ฉฐ, ์์คํ ํ์ฅ์ ๋ฐ๋ฅธ ํ์ฅ์ฑ์ ๋ณด์ฅํฉ๋๋ค. ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์์ ๋ฉ๋ชจ๋ฆฌ ๋์ ์ํ์ ์ต์ํํ๋ ๊ฒ์ฆ๋ ๊ธฐ๋ฒ๊ณผ ์ํคํ ์ฒ ์ต๊ด์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ตฌ์กฐํ๋ ๋ฆฌ์์ค ๊ด๋ฆฌ ๊ตฌ์กฐ ์ฌ์ฉ
Java, C#, Python๊ณผ ๊ฐ์ ์ธ์ด๋ ์๋ ๋ฆฌ์์ค ์ ๋ฆฌ๋ฅผ ์ํ ๊ตฌ์กฐํ๋ ๊ตฌ๋ฌธ์ ์ ๊ณตํฉ๋๋ค. ์ฌ๊ธฐ์๋ try-with-resources๊ฐ ํฌํจ๋ฉ๋๋ค. using ๋ช
๋ น๋ฌธ ๋ฐ ์ปจํ
์คํธ ๊ด๋ฆฌ์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๋ฉด ์์ธ๊ฐ ๋ฐ์ํ๋๋ผ๋ ํ์ผ, ์์ผ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ๊ณผ ๊ฐ์ ๋ฆฌ์์ค๊ฐ ๋ซํ๋๋ค. ๊ฐ๋ฐ์๋ ๋๋ฝ๋๊ธฐ ์ฌ์ด ์๋ ์ข
๋ฃ ํธ์ถ๋ณด๋ค ์ด๋ฌํ ๊ตฌ์กฐ๋ฅผ ์ ํธํด์ผ ํฉ๋๋ค. C ๋ฐ C++์ ๊ฐ์ ๋น๊ด๋ฆฌ ํ๊ฒฝ์์ RAII(Resource Acquisition Is Initialization)๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ฒด๊ฐ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ๋ ๋ฆฌ์์ค๊ฐ ํด์ ๋ฉ๋๋ค. ์ด๋ฌํ ํจํด์ ์ ๋ฆฌ๋ฅผ ์์ด๋ฒ๋ฆด ๊ฐ๋ฅ์ฑ์ ์ค์ด๊ณ ๋ ์์ ํ๊ณ ์์ธก ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ํ์ ์ด๋ฌํ ๊ตฌ์กฐ๋ฅผ ํ์คํํ๊ณ , ์๋ ๋ฆฌ์์ค ๊ด๋ฆฌ๋ฅผ ๊ฒํ ์ ํน๋ณํ ๊ฒํ ๊ฐ ํ์ํ ์ฝ๋ ์
์ทจ๋ก ๊ฐ์ฃผํด์ผ ํฉ๋๋ค.
์ด๋ฒคํธ ๋ฆฌ์ค๋ ๋ฐ ์ฝ๋ฐฑ์ ์ฆ์ ๋ฑ๋ก ํด์
์ด๋ฒคํธ ๊ธฐ๋ฐ ์ฝ๋๋ ๋ฆฌ์ค๋๋ฅผ ๋ฑ๋กํ๋ ๊ฐ์ฒด๊ฐ ๋ ์ด์ ํ์ํ์ง ์์ ๋ ๋ฆฌ์ค๋์ ๋ช ์์ ์ธ ๊ตฌ๋ ์ทจ์๋ฅผ ์๊ตฌํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ํด์ ํ ์ ์๋ ์ฐธ์กฐ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ ์ง๋ฉ๋๋ค. GUI ์์, ์ค์๊ฐ ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ ๋๋ ์ฌ์ฉ์ ์ง์ ์ด๋ฒคํธ ๋ฒ์ค๊ฐ ์๋ ์์คํ ์์๋ ๋ชจ๋ ๋ฑ๋ก์ ๋ฑ๋ก ์ทจ์์ ํจ๊ป ๋ฏธ๋ฌ๋งํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ ๊ตฌ์ฑ ์์๊ฐ ์์ฃผ ๋ง์ดํธ ๋ฐ ์ธ๋ง์ดํธ๋๋ ๋ชจ๋์ ๋๋ ๋์ UI ํ๋ ์์ํฌ์์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ํํ ์ค์ ์ค ํ๋๋ ์ด๊ธฐํ ์ค์ ๋ฆฌ์ค๋๋ฅผ ๋ฑ๋กํ๊ณ ์๋ฉธ ๋๋ ์ธ๋ง์ดํธ ์ค์ ์ ๊ฑฐํ์ง ์๋ ๊ฒ์ ๋๋ค. ๊ตฌ์ฑ ์์๊ฐ ์๊ฐ์ ์ผ๋ก ์๋ฉธ๋์ง๋ง ๋ ผ๋ฆฌ์ ์ผ๋ก๋ ์ฐธ์กฐ๋๋ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋์ ๋ฉ๋๋ค. ๊ฐ๋ฐ์๋ ์ด๋ฒคํธ ๊ตฌ๋ ๋ก์ง์ ์ค์ ์ง์คํํ๊ณ ํด์ฒด ๋ฃจํด์ด ์ผ๊ด๋๊ฒ ํธ๋ฆฌ๊ฑฐ๋๋๋ก ํด์ผ ํฉ๋๋ค. ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์ฝํ ์ด๋ฒคํธ ํจํด์ด๋ ํ๋ ์์ํฌ์์ ์ ๊ณตํ๋ ๋ผ์ดํ์ฌ์ดํด ํํฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ฆฌ๋ฅผ ์๋ํํ์ธ์. ๋ํ ๊ตฌ์ฑ ์์ ๋นํ์ฑํ ๋๋ ํ์ด์ง ์ธ๋ก๋ ํ ๋ฆฌ์ค๋ ์ ๊ฑฐ๋ฅผ ๊ฒ์ฆํ๋ ๋จ์ ๋ฐ ํตํฉ ํ ์คํธ๋ฅผ ์ฑํํ์ธ์.
์ ์ ๋ฐ ์ ์ญ ์ฐธ์กฐ ์ฌ์ฉ ์ ํ
์ ์ ํ๋์ ์ ์ญ ๋ณ์๋ ํธ์์ฑ์ ์ํด ์์ฃผ ์ฌ์ฉ๋์ง๋ง, ์๊ตฌ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ ์ ์ปจํ ์คํธ์์ ์ฐธ์กฐ๋๋ ๋ชจ๋ ๊ฐ์ฒด๋ ํ์ ์ฌ๋ถ์ ๊ด๊ณ์์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ฒด ๋ฐํ์ ๋์ ๋ฉ๋ชจ๋ฆฌ์ ๋จ์ ์์ต๋๋ค. ํนํ ๋์ฉ๋ ์ปฌ๋ ์ , ์ธ์ ๋ฐ์ดํฐ ๋๋ UI ์์๊ฐ ์ ์ ์ผ๋ก ์ ์ฅ๋๋ ๊ฒฝ์ฐ ๋์ฑ ์ํํฉ๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ด๋ฌํ ๊ฐ์ฒด๋ ๋์ ๋์ด ์๋์น ์์ ๋ฉ๋ชจ๋ฆฌ ์ ์ง๋ฅผ ์ ๋ฐํฉ๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด ๊ฐ๋ฐ์๋ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ์์, ์ ํธ๋ฆฌํฐ ๋ฉ์๋ ๋๋ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ ์ฑ๊ธํด์๋ง ์ ์ ํ๋๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ปจํ ์คํธ์ ์ข ์์ ์ด๊ฑฐ๋ ๋ฌด๊ฑฐ์ด ๊ฐ์ฒด๋ฅผ ์ ์ ์ผ๋ก ์ ์ฅํ์ง ๋ง์ญ์์ค. ์ ์ญ ์ฐธ์กฐ๊ฐ ํ์ํ ๊ฒฝ์ฐ ๋ง๋ฃ ๋ก์ง, ์ ๊ฑฐ ์ ์ฑ ๋๋ ์๋ null ์ฒ๋ฆฌ ์ ๋ต๊ณผ ํจ๊ป ์ฌ์ฉํ์ญ์์ค. ์ข ๋ฃ ๋๋ ๊ตฌ์ฑ ์์ ํด์ฒด ์ ์ ์ ์ผ๋ก ์ ์ฅ๋ ๋ฆฌ์์ค๋ ๋ช ์์ ์ผ๋ก ์ญ์ ํด์ผ ํฉ๋๋ค. ํ ๋ฆฌํ์คํธ ์ค์ ์ ์ ์ฌ์ฉ ๋ฐฉ์์ ๊ฒํ ํ์ฌ ์์ ๋๋ ํธ๋์ญ์ ๋ฐ์ดํฐ๊ฐ ์๋์น ์๊ฒ ์ฅ๊ธฐ ์ ์ฅ์์ ์ ์ฅ๋์ง ์๋๋ก ํด์ผ ํฉ๋๋ค.
ํ์ํ ๊ฒฝ์ฐ ์ํ ์ฐธ์กฐ๋ฅผ ์ค๋จํ์ธ์
๊ฐ๋น์ง ์ปฌ๋ ์
ํ๊ฒฝ์์ ์ํ ์ฐธ์กฐ๋ ๋ฉ๋ชจ๋ฆฌ ํ์๋ฅผ ๋ฐฉํดํ ์ ์์ต๋๋ค. ์ด๋ ํนํ ํด๋ก์ , ์ฐ๊ฒฐ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋๋ ์๋ฐฉํฅ ๊ด๊ณ๋ฅผ ์ฌ์ฉํ ๋ ํํ ๋ฐ์ํฉ๋๋ค. ๊ฐ๋ฐ์๋ ์๋ก๋ฅผ ์ฐธ์กฐํ๋ ๊ฐ์ฒด ๊ฐ์ ์ํ์ ํ์ฑํ๋ ๋ฐ ์ฃผ์ํด์ผ ํฉ๋๋ค. C++์์๋ ๋ค์์ ์ฌ์ฉํฉ๋๋ค. weak_ptr ~์ ์ํด ํ์ฑ๋ ์ํ์ ๋๋ค shared_ptrJava ๋๋ Python์์๋ ๊ฐ์ฒด ๊ทธ๋ํ๋ฅผ ๊ฒํ ํ๊ณ , ํ์ํ ๊ฒฝ์ฐ ์ฝํ ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋๋ฌ ๊ฐ๋ฅํ ๊ฐ์ฒด์ ์์ง์ ํ์ฉํฉ๋๋ค. ํด๋ก์ ๋ ์ต๋ช
ํด๋์ค๋ฅผ ์ฌ์ฉํ ๋๋ ์บก์ฒ๋ ๋ณ์์ ๋ฒ์๋ฅผ ์ต์ํํฉ๋๋ค. ๋ฉ์๋๋ ์์ ์ํ ์ ๋ณด๋ง ํ์ํ ๊ฒฝ์ฐ ์ ์ฒด ํด๋์ค ์ธ์คํด์ค๋ฅผ ์ฐธ์กฐํ์ง ๋ง์ญ์์ค. ์๋์น ์๊ฒ ํฐ ๊ฐ์ฒด๋ฅผ ์บก์ฒํ๋ ํด๋ก์ ๋ ๋น๋๊ธฐ ๋๋ ๋ฐ์ํ ์ฝ๋์์ ๋น๋ฒํ๊ฒ ๋์๋ฅผ ๋ฐ์์ํค๋ ์์ธ์
๋๋ค. ๊ฐ๋ฐ ๊ณผ์ ์์ ์ด๋ฌํ ํจํด์ ์ ๊ธฐ์ ์ผ๋ก ๊ฐ์ฌํ๊ณ ๋ฉ๋ชจ๋ฆฌ ๋์์ ํ
์คํธํ๋ฉด ์ํ ์ฐธ์กฐ๊ฐ ์ ์ฉ์ฑ์ ๋์ด ์ง์๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ํจ์จ์ ์ธ ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ฐ ํจํด ์ฌ์ฉ
์ ์ ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ํํ๋ฉด ๋ถํ์ํ ๋ฉ๋ชจ๋ฆฌ ๋ณด์กด์ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, WeakHashMap ์๋ฐ ๋๋ WeakKeyDictionary Python์์๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ํค๋ ๊ฐ์ด ์๋์ผ๋ก ์ญ์ ๋๋๋ก ํฉ๋๋ค. LRU ์บ์๋ ์ ํ๋ ํ์ ๊ฐ์ ๋ ์ ํฉํ ๊ตฌ์กฐ๋ฅผ ์ ์ฉํ ์ ์๋ ๊ฒฝ์ฐ, ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฌด์ ํ ๋ฆฌ์คํธ๋ ๋งต์ ์ฌ์ฉํ์ง ์๋๋ก ํ์ญ์์ค. ๋์ฉ๋ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ผ์์ ์ผ๋ก ๋ณด๊ดํด์ผ ํ๋ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ๋ฅผ ๋ถํ ํ๊ณ ์ฒญํฌ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ํด์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋ถ๋ด์ ์ค์ด์ญ์์ค. ๋ํ, "๋ง์ฝ์ ๋๋นํ์ฌ" ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์บ์ฑํ๋ ์ฑ๊ธํ ์ต์ ํ๋ ํผํ์ญ์์ค. ๋ง๋ฃ, ์ ๊ฑฐ ๋๋ ํฌ๊ธฐ ์ ํ์ ๋ํ ๋ช
ํํ ์ ์ฑ
์ ๊ตฌํํ๋ฉด ๊ฐ๋ฐ์์ ๊ฐ์
์์ด ์์คํ
์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ๋์ ๋ฐ์ ํ๋ฟ ์๋๋ผ ์ค๊ณ ๊ณผ์ ์์๋ ํ๋กํ์ผ๋ง์ ์ํํ๋ฉด ํ์ค์ ์ธ ๋ถํ ์ํฉ์์ ๋ฐ์ดํฐ ๋ณด์กด ๋ฐ ๊ตฌ์กฐ ํฌ๊ธฐ์ ๋ํ ๊ฐ์ ์ ๊ฒ์ฆํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์ฌ์ฉํ์ง ์๋ ๊ฐ์ฒด๋ฅผ ๋ช ์์ ์ผ๋ก ํ๊ธฐํ์ธ์
๊ฐ๋น์ง ์ปฌ๋ ์
์ธ์ด๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋์ผ๋ก ํด์ ํ์ง๋ง, ๊ฐ๋น์ง ์ปฌ๋ ์
์์ ์ ๊ฐ์ฒด ๋๋ฌ ๊ฐ๋ฅ์ฑ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ์ฐธ์กฐ๊ฐ ๋จ์ ์์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ ํ ๋น๋ ์ํ๋ก ์ ์ง๋ฉ๋๋ค. ๊ฐ๋ฐ์๋ ๋ณ์๋ฅผ ๋ช
์์ ์ผ๋ก ์ค์ ํ์ฌ ํด์ ์๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค. null (์๋ฐ์์) ๋๋ None (Python์์) ์ฌ์ฉ์ด ์๋ฃ๋ ํ ๊ฐ์ฒด๊ฐ ์ญ์ ๋ฉ๋๋ค. ์ด๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ์ ํด๋น ๊ฐ์ฒด๊ฐ ๋ ์ด์ ํ์ํ์ง ์์์ ์๋ฆฌ๋ ์ ํธ์
๋๋ค. ์ด ๊ธฐ๋ฒ์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ปค, ๊ธด ๋ฃจํ, ์ธ์
ํธ๋ค๋ฌ์ ๊ฐ์ด ๊ฐ์ฒด๊ฐ ์ฅ์๊ฐ ์ฐธ์กฐ๋๋ ์ฅ๊ธฐ ๋ฒ์์์ ํนํ ์ ์ฉํฉ๋๋ค. ์ฑ๋ฅ์ด ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์
์์ ๊ฐ์ฒด ์๋ช
์ฃผ๊ธฐ๋ฅผ ์๋์ ์ผ๋ก ๊ด๋ฆฌํ๋ฉด ์ต๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ํฌ๊ฒ ์ค์ผ ์ ์์ต๋๋ค. ํ์ง๋ง ์ฝ๋๋ฅผ ๋ณต์กํ๊ฒ ๋ง๋ค๊ฑฐ๋ ๋ฒ๊ทธ๋ฅผ ๋ฐ์์ํค์ง ์๋๋ก ์ ์คํ๊ฒ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์์น์ ์ผ๋ก, ํฌ๊ฑฐ๋ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋ ๋ณ์๋ ์์
์ด ์๋ฃ๋๋ ์ฆ์ ์ญ์ ํด์ผ ํฉ๋๋ค.
๋ฐฉ์ด์ ํ ๋น ์ ๋ต ์ฑํ
๋ฉ๋ชจ๋ฆฌ ๋์๋ ์ ๋ง ํ์ํ ๋๋ง ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํจ์ผ๋ก์จ ์ค์ผ ์ ์์ต๋๋ค. ์ฑ๋ฅ์ ํ์ํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด ํฐ ๊ตฌ์กฐ์ฒด๋ฅผ ๋ฏธ๋ฆฌ ํ ๋นํ์ง ๋ง์ธ์. ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์์ ํ ๋นํ๊ณ ๊ฐ์ฒด์ ์์ ์ด ์๋ฃ๋๋ ์ฆ์ ํด์ ํ๋ ์ง์ฐ ์ด๊ธฐํ ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ธ์. ๋ฒ์๊ฐ ์ง์ ๋ ๊ตฌ์กฐ์ฒด๋ฅผ ํตํด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ถ์ ํ๊ณ , ๋์ฉ๋ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์์ ํ ๋ก๋ํ๋ ๋์ ์ผ๊ด ์ฒ๋ฆฌํ์ธ์. ์ผ๋ถ ํ๊ฒฝ์์๋ ํ๋ง์ผ๋ก ์ธํด ๊ฐ์ฒด๊ฐ ํ์ ๋ฐํ๋์ง ์์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํ ์๋ ์์ต๋๋ค. ๋ชจ๋ ์ฌ์ฉ์ ์ง์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ก์ง์ ์๊ฐ ์ด๊ณผ ๋๋ ๋์ ๊ฐ์ง ๋ก์ง์ ํฌํจํด์ผ ํฉ๋๋ค. ๊ฐ๋ฐ์๋ ํนํ ์ฑ๋ฅ์ ๋ฏผ๊ฐํ๊ฑฐ๋ ๋ฆฌ์์ค๊ฐ ์ ํ๋ ์์คํ ์์ ๋ชจ๋ ํ ๋น์๋ ํ ๋น ํด์ ๊ณํ์ด ํจ๊ป ์ ๊ณต๋์ด์ผ ํ๋ค๋ ์ฌ๊ณ ๋ฐฉ์์ ๊ฐ์ ธ์ผ ํฉ๋๋ค.
CI/CD์ ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ฌ ํตํฉ
์ง์์ ์ธ ๋ชจ๋ํฐ๋ง ์์ด๋ ์๋ฐฉ์ด ์๋ฒฝํ ์ ์์ต๋๋ค. CI/CD ํ์ดํ๋ผ์ธ์ ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ฌ๋ฅผ ํตํฉํ๋ฉด ํ๊ท๋ฅผ ์กฐ๊ธฐ์ ๊ฐ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์๋ ํ๋กํ์ผ๋ฌ, ํ ๋น ์นด์ดํฐ ๋๋ ์ข ํฉ ๋ถํ ํ ์คํธ์ ๊ฐ์ ๋๊ตฌ๋ฅผ ๊ฐ ๋ฐฐํฌ ์ ์ ์คํํ๋๋ก ์์ฝํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์์คํ ์ ํ ํฌ๊ธฐ, GC ๋น๋, ๊ฐ์ฒด ์, ๋ฆฌ์์ค ํธ๋ค๊ณผ ๊ฐ์ ์ฃผ์ ์งํ๋ฅผ ์ถ์ ํฉ๋๋ค. ์๊ณ๊ฐ์ ์ด๊ณผํ๊ฑฐ๋ ๊ธฐ์ค์ ์์ ๋ฒ์ด๋๋ ํ์์ด ๊ฐ์ง๋๋ฉด ๋ณ๊ฒฝ ์ฌํญ์ด ํ๋ก๋์ ํ๊ฒฝ์ ์ ์ฉ๋๊ธฐ ์ ์ ํ์ ์๋ฆผ์ ๋ณด๋ ๋๋ค. ์ด๋ฌํ ์ ์ ์ ์ ๊ทผ ๋ฐฉ์์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ฌํ์ ์์ ์ด ์๋ ์ง์์ ์ธ ๊ด๋ฆฌ ๋ฐฉ์์ผ๋ก ์ ํํฉ๋๋ค. ๋ํ ํ์ ํ์ง ๊ธฐ์ค์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ จ KPI๋ฅผ ํฌํจํ๊ณ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ์ ์ค์ ์ ๋ ์ ๊ธฐ์ ์ธ ์ฝ๋ ๊ฒํ ๋ฅผ ์ํํด์ผ ํฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ ์์ ๋ฌธํ๋ฅผ ๊ตฌ์ถํ๋ฉด ๊ฐ๋ฐ ํ๋ก์ธ์ค์ ์๋ฐฉ ๊ธฐ๋ฅ์ด ๋ด์ฅ๋ฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๋์์ ๋ํ ๋จ์ ํ ์คํธ
๋ฉ๋ชจ๋ฆฌ ๋์๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฐํ์ ๋์ ๋ฐ ์ฅ๊ธฐ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ๊ณผ ๊ด๋ จ์ด ์์ง๋ง, ํ ์คํธ ์ค์, ํนํ ํน์ ๋์ ๋จ์ ํ ์คํธ๋ฅผ ํตํด ๋ฐ๊ฒฌํ ์ ์์ผ๋ฉฐ, ๋ ๊ทธ๋ ๊ฒ ํด์ผ ํฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ ๊ฒ์ฆ์ ๋จ์ ํ ์คํธ ์ํฌํ๋ก์ ํตํฉํ๋ฉด ํ์ ๋์๊ฐ ํ๋ก๋์ ํ๊ฒฝ์์ ์ฌ๊ฐํด์ง๊ธฐ ์ ์ ๊ฐ๋ฐ ํ๋ก์ธ์ค ์ด๊ธฐ์ ๋์๋ฅผ ํ์ ํ ์ ์์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ์ ๊ณ ๋ คํ์ฌ ์ค๊ณ๋ ๋จ์ ํ ์คํธ๋ ๊ฐ์ฒด ์๋ช ์ฃผ๊ธฐ ๊ฒฝ๊ณ๊ฐ ์ค์๋๊ณ , ๋ฆฌ์์ค๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ํด์ ๋๋ฉฐ, ์๋์น ์์ ์ฐธ์กฐ ์์ด ์์ ์ด ์๋ฃ๋๋์ง ํ์ธํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๋จ์ ํ ์คํธ๋ง์ผ๋ก ๋ชจ๋ ๋์๋ฅผ ๋ฐ๊ฒฌํ ์๋ ์์ง๋ง, ์ฐ์ํ ์์ง๋์ด๋ง ์์น์ ๊ฐํํ๊ณ ๋์ ์ธ์ ์ค๊ณ๋ฅผ ์ฅ๋ คํ๋ ์ค์ํ ์ต์ ์ ์ ๋๋ค.
ํ ๋น ๋ฐ ์ ๋ฆฌ ๋์์ ์ค์ฌ์ผ๋ก ํ ์ค๊ณ ํ ์คํธ
๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํ ํจ๊ณผ์ ์ธ ๋จ์ ํ ์คํธ๋ ๊ธฐ๋ฅ์ ์ ํ์ฑ๋ฟ๋ง ์๋๋ผ ๊ฐ์ฒด์ ์๋ช ์ฃผ๊ธฐ์๋ ์ค์ ์ ๋ก๋๋ค. ๊ฐ ํ ์คํธ๋ ์์ ๊ฐ์ฒด๊ฐ ์ ์ ํ๊ฒ ์์ฑ, ์ฌ์ฉ ๋ฐ ์ญ์ ๋๋์ง ๊ฒ์ฆํด์ผ ํฉ๋๋ค. ์ฌ์ฉ์ ์ง์ ์บ์, ์ธ์ ๊ด๋ฆฌ์ ๋๋ ์๋น์ค ํฉํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ๊ฐ์ฒด ์์ฑ์ ์๋ฎฌ๋ ์ด์ ํ๊ณ ์์ ์ด ์๋ฃ๋ ํ ๋ถํ์ํ๊ฒ ์ ์ง๋๋ ๊ฒ์ด ์๋์ง ํ์ธํ๋ ํ ์คํธ๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋์ผํ ๋ก์ง์ ์ฌ๋ฌ ๋ฒ ํธ์ถํ๊ณ ์คํ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด๋ ๊ฐ์ฒด ์๋ฅผ ๋น๊ตํ๋ ์์ ์ด ํฌํจ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ํธ์ถํ ๋๋ง๋ค ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ฆ๊ฐํ๋ฉด ๋์๋ฅผ ๋ํ๋ผ ์ ์์ต๋๋ค. ๋์ฉ๋ ํ์ด๋ก๋๋ ๋์ ๊ฐ์ฒด ๋ณ๋๋ฅ ์ ์ฒ๋ฆฌํ๋ ์์คํ ์ ๊ฒฝ์ฐ, ํ ์คํธ์ ์ ๋ฆฌ๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํ ํด์ฒด ๋ก์ง์ ํฌํจํด์ผ ํฉ๋๋ค. ์ผ๋ถ ํ๊ฒฝ์์๋ ๊ฐ๋ฒผ์ด ํ ๋น ์นด์ดํฐ ๋๋ ์ฐธ์กฐ ๊ฒ์ฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธ ์ฝ๋๋ฅผ ๊ณ์ธกํ๋ฉด ๋ฒ์๋ฅผ ๋ฒ์ด๋์ง ์๋ ๊ฐ์ฒด๋ฅผ ํ์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ด๋ฌํ ๋จ์ธ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์์ธก ๊ฐ๋ฅํ๊ณ ํ ์คํธ ๋ฒ์ ๋ด์์ ์์ฒด์ ์ผ๋ก ์ ์ง๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
๋์ถ ๊ฐ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ์ ํธ๋ฆฌํฐ ์ฌ์ฉ
์ต์ ํ๋ก๊ทธ๋๋ฐ ์ํ๊ณ๋ ๋ฉ๋ชจ๋ฆฌ ๋์ ๊ฐ์ง ๊ธฐ๋ฅ์ ํตํด ๋จ์ ํ
์คํธ ํ๋ ์์ํฌ๋ฅผ ํ์ฅํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. C++์ ๊ฒฝ์ฐ Google Test์ ๊ฐ์ ๋๊ตฌ๋ฅผ Valgrind ๋๋ AddressSanitizer์ ํจ๊ป ์ฌ์ฉํ์ฌ ํ
์คํธ ์คํ ์ค ํ ๋น์ ์ถ์ ํ ์ ์์ต๋๋ค. Java ๊ฐ๋ฐ์๋ ๋ค์๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. junit-allocations or OpenJDK Flight Recorder ํ
์คํธ ๋ชจ๋์์ ์ ์ง๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด์ฐฐํฉ๋๋ค. Python์ ๋ค์์ ์ ๊ณตํฉ๋๋ค. objgraph, tracemalloc์์ฐ ๋ฐ gc ๋ชจ๋ ๊ฒ์ฌ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์ด์ค์
๊ฐ ๊ฐ์ฒด ์ฆ๊ฐ๋ฅผ ์ถ์ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ์ค ํ
์คํธ ์ค์ํธ์ ํตํฉ๋์ด ๊ฐ์ฒด ์ ๋๋ ๋ฉ๋ชจ๋ฆฌ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ ๊ธฐ๋์น๋ฅผ ์ค์ ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํ
์คํธ๋ ๋ฉ์๋ ์๋ฃ ํ ํด๋์ค์ ์ถ๊ฐ ์ธ์คํด์ค๊ฐ ๋จ์ ์์ง ์์์ ์ด์ค์
ํ ์ ์์ต๋๋ค. ํ
์คํธ ์ผ์ด์ค๋ฅผ ์ ์ด๋ ํ ๋น ๋ฒ์ ๋๋ ๋ฉ๋ชจ๋ฆฌ ์ค๋
์ท์ผ๋ก ๋ํํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ์จ๊ฒจ์ง ์ฐธ์กฐ๊ฐ ๋จ์ ์์ง ์์์ง ํ์ธํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์กฐ๊ธฐ์ ํฌ์ฐฉํ ๋ฟ๋ง ์๋๋ผ, ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์
ํ๋กํ์ผ๋ง ์ค์๋ ์ข
์ข
์ด๋ ค์ด ์ผ๊ด์ ์ธ ์ฌํ์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
๋ฐ๋ณต ์ฌ์ฉ ์๋ฎฌ๋ ์ด์ ๋ฐ ์์ ์ฑ ์ธก์
๋ฉ๋ชจ๋ฆฌ ๋์๋ ๋ฐ๋ณต์ ์ด๊ฑฐ๋ ์ฅ๊ธฐ ์คํ ์์ ์์ ์์ฃผ ๋ฐ์ํฉ๋๋ค. ๋จ์ ํ ์คํธ๋ฅผ ํตํด ์ด๋ฌํ ํจํด์ ๊ฐ์งํ๋ ค๋ฉด ๋ฃจํ ๋ด์์ ๋์ผํ ํจ์๋ ๊ธฐ๋ฅ์ ๋ฐ๋ณต์ ์ผ๋ก ์คํํ๋ ์๋ฎฌ๋ ์ด์ ์ ์ํํด ๋ณด์ธ์. ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ๋จ์ผ ํ ์คํธ์์๋ ๋ช ํํ ๋๋ฌ๋์ง ์๋ ์ ์ง์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์ฆ๊ฐ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ค๋๋ ํญ๋ชฉ์ ์ ๊ฑฐํ์ง ๋ชปํ๋ ์บ์ฑ ํจ์๋ ๊ณ ๋ฆฝ๋ ์กฐ๊ฑด์์๋ ํต๊ณผํ์ง๋ง ์ง์์ ์ธ ๋ฐ๋ณต์์๋ ์คํจํ ์ ์์ต๋๋ค. ์์ญ ๋๋ ์๋ฐฑ ๋ฒ์ ๋ฐ๋ณต์ ์คํํ๋๋ก ํ ์คํธ๋ฅผ ๊ตฌ์ฑํ๊ณ ์๋ฃ ํ ๋ฉ๋ชจ๋ฆฌ ๋๋ ๊ฐ์ฒด ์ํ๋ฅผ ์ธก์ ํ์ธ์. ์ผ๋ถ ํ ์คํธ ํ๋ ์์ํฌ๋ ์ฌ์ดํด ๊ฐ ๋ฆฌ์์ค ํ์ธ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ํฝ์ค์ฒ ์์ค์ ์ค์ ๋ฐ ํด์ ํํฌ๋ฅผ ์ง์ํฉ๋๋ค. ์ด๋ฌํ ๋ฃจํ๋ฅผ ํ ์คํธ ์๋ํ์ ํฌํจํ๋ฉด ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ผ๊ด๋๊ฒ ์ ์ง๋๋๋ก ํ ์ ์์ต๋๋ค. ์ด๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์, API ์๋ํฌ์ธํธ ๋๋ ์ผ๊ด ์์ ๊ณผ ๊ฐ์ด ์ฅ์๊ฐ ์ธ์ ๋์ ์์ ์ฑ์ ์ ์งํด์ผ ํ๋ ์๋น์ค์์ ํนํ ์ค์ํฉ๋๋ค. ๋ฐ๋ณต ์คํ ํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ ์ ์ผ๋ก ์ ์ง๋๋์ง ๊ด์ฐฐํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ๊ฒฌ๊ณ ์ฑ์ ๋ํ ์ด๊ธฐ ํ์ ์ ์ป์ ์ ์์ต๋๋ค.
ํ ์คํธ ํด์ฒด ์ ์ ์ ํ ๋ฆฌ์์ค ๋ฆด๋ฆฌ์ค ํ์ธ
๋จ์ ํ
์คํธ๋ ํญ์ ํ๊ฒฝ์ ๊นจ๋ํ ์ํ๋ก ๋๋๋ ค์ผ ํ๋ฉฐ, ์ฌ๊ธฐ์๋ ๋ฉ๋ชจ๋ฆฌ๋ ํฌํจ๋ฉ๋๋ค. ํจ์ํ ์ด์ค์
์ธ์๋ ํ
์คํธ ํด์ฒด ๋ฉ์๋๋ ์์ ๋ฆฌ์์ค๊ฐ ํด์ ๋์๋์ง ํ์ธํ๋ ๋ฐ ์ด์์ ์ธ ์์น์
๋๋ค. ํ์ผ ์คํธ๋ฆผ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๋๋ ๋ชจ์ ์๋น์ค ์ธ์คํด์ค๋ฅผ ์ฒ๋ฆฌํ๋ , ํด์ฒด ๋ธ๋ก์๋ ๋ช
์์ dispose, close๋ฐ null ์์
. ์ด๋ฌํ ํจํด์ ์์
์๋ฃ ์ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ํด์ ํด์ผ ํ๋ค๋ ์์น์ ๊ฐํํฉ๋๋ค. ํ์ํ ๊ฒฝ์ฐ, ํค ์ฐธ์กฐ์ ๋ ์ด์ ์ ๊ทผํ ์ ์๊ฑฐ๋ ์ข
๋ฃ์๊ฐ ํธ๋ฆฌ๊ฑฐ๋์์์ ๋จ์ธํฉ๋๋ค. ์ด๋ฌํ ๊ดํ์ ๊ฐ๋ฐ์๊ฐ ๋์ฑ ๋
๋ฆฝ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ๋๋ก ์ฅ๋ คํ๊ณ ์ฌ๋ฌ ์ค์ํธ(suite) ๊ฐ์ ํ
์คํธ ์ค์ผ์ ์ค์
๋๋ค. ํด์ฒด ์ฝ๋์ ๊ฐ์ฒด ์๋ช
์ฃผ๊ธฐ ๊ฒ์ฆ์ด ํฌํจ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์ ๋ฐํ๋ ํ๊ท ๋๋ ๋์ ๋ณ๊ฒฝ์ ํจ์ฌ ์ฝ๊ฒ ๊ฐ์งํ ์ ์์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ ๋จ์ธ์ ํ
์คํธ ์ ๋ฆฌ์ ํตํฉํ๋ฉด ํ
์คํธ ๊ฒฉ๋ฆฌ๊ฐ ํ์์ ์ธ ๋ณ๋ ฌ ๋๋ ์ฐ์ ํ
์คํธ ํ๊ฒฝ์์ ์์ ์ฑ๋ ํฅ์๋ฉ๋๋ค.
์ฝ๋ฉ ์ํ
๋ค์์ ์ผ๋ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๋์์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ฃผ๋ ๋ช ๊ฐ์ง ์ฝ๋ฉ ์์ ๋๋ค.
C++ ์์ : ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
์ด ์์์ ๋ฉ๋ชจ๋ฆฌ๋ ์ ์ ๋ฐฐ์ด์ ์์ฑํ๊ธฐ ์ํด new[]๋ฅผ ์ฌ์ฉํ์ฌ ํ ๋น๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๊ธฐ ์ํ delete[] ํธ์ถ์ด ์๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํด์ ๋์ง ์์ ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํฉ๋๋ค.
ํด๊ฒฐ๋ ์:
๋์๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ delete[]๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ ํ ํด์ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ ์ด์ ํ์ํ์ง ์์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์คํ ์ผ๋ก ๋ฐํ๋ฉ๋๋ค.
Java ์์ : ๋ฆฌ์ค๋ ๋ฉ๋ชจ๋ฆฌ ๋์
๋ฉ๋ชจ๋ฆฌ ๋์ ์:
์ด ์์์ ์ต๋ช
์ ๋ด๋ถ ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒํผ์ ๋ํ ActionListener๋ฅผ ๋ง๋ญ๋๋ค. ๊ทธ๋ฌ๋ ๋ฆฌ์ค๋๋ฅผ ์ ๊ฑฐํ์ง ์๊ณ ๋ฒํผ์ ์ ๊ฑฐํ๊ฑฐ๋ ํ๋ ์์ ๋ซ์ผ๋ฉด ๋ฆฌ์ค๋๊ฐ ๋ฒํผ์ด๋ ํ๋ ์์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์งํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์ผ์ผํฌ ์ ์์ต๋๋ค.
ํด๊ฒฐ๋ ์:
๋ฆฌ์ค๋์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ์งํ๊ณ ๋ฒํผ์ด ๋ ์ด์ ํ์ํ์ง ์์ ๋ ๋ช ์์ ์ผ๋ก ์ ๊ฑฐํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋์ ๊ฐ๋ฅ์ฑ์ด ์ํ๋ฉ๋๋ค.
ํ์ด์ฌ ์์ : ์ํ ์ฐธ์กฐ
๋ฉ๋ชจ๋ฆฌ ๋์ ์:
์ด ์์์ a์ b๋ ์๋ก์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ์งํ์ฌ ์ํ ์ฐธ์กฐ๋ฅผ ์์ฑํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด Python์ ๊ฐ๋น์ง ์์ง๊ธฐ๊ฐ ๊ฐ์ฒด๋ฅผ ํด์ ํ์ง ๋ชปํด ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
ํด๊ฒฐ๋ ์:
์ฝํ ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์ํ ์ฐธ์กฐ๊ฐ ๋์ด์ง๊ณ , ๊ฐ๋น์ง ์์ง๊ธฐ๊ฐ ๊ฐ์ฒด๋ฅผ ๋ ์ด์ ์ฌ์ฉํ์ง ์์ ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ํ ์ ์์ต๋๋ค.
SMART TS XL: ํจ๊ณผ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๋์ ํ์ง ๋ฐ ํด๊ฒฐ์ ์ํ ๋๊ตฌ
SMART TS XL ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๊ฐ์งํ๊ณ ํด๊ฒฐํ๋ ํ๋ก์ธ์ค๋ฅผ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์ด ๋๊ตฌ๋ฅผ ๊ฐ๋ฐ ์ํฌํ๋ก์ ํตํฉํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ์ ์ฝ๋ ๋ถ์: SMART TS XL ์ด๋ฒคํธ ๊ณ ๊ธ ์ ์ ๋ถ์ ๊ธฐ๋ฅ, ์ฝ๋๋ฅผ ๋ถ์ํ์ฌ ์ ์ฌ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์๋ณํฉ๋๋ค. ๋ค๋ฅธ ๋๊ตฌ์ ๋ฌ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ๋์๋ก ์ด์ด์ง ์ ์๋ ํจํด์ ๋ํ ๋ ๊น์ ํต์ฐฐ๋ ฅ๊ณผ ๋ ์ ํํ ํ์ง๋ฅผ ์ ๊ณตํฉ๋๋ค.
ํ๋ก์ฐ์ฐจํธ ๋น๋ฉ: SMART TS XL ์๋์ผ๋ก ํ๋ก์ฐจํธ ์์ฑ ์ฝ๋ ๋ด์์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐ ํ ๋น ํด์ ํ๋ก์ธ์ค๋ฅผ ์๊ฐํํฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ๋ณต์กํ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์๋๋ฆฌ์ค๋ฅผ ์ดํดํ๊ณ ๋์๊ฐ ๋ฐ์ํ ์ ์๋ ์์น๋ฅผ ์๋ณํ๋ ๋ฐ ํนํ ์ ์ฉํฉ๋๋ค.
์ํฅ ๋ถ์: ํจ๊ป SMART TS XL๋น์ ์ ํ ์ ์์ต๋๋ค ์ํฅ ๋ถ์์ ์ํํ๋ค ์ฝ๋์ ํ ๋ถ๋ถ์์ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ค๋ฅธ ์์ญ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ์ด๋ค ์ํฅ์ ๋ฏธ์น๋์ง ํ์ธํ๋ ๊ฒ์ ๋๋ค. ์ด๋ ์ฌ์ํ ๋ณ๊ฒฝ ์ฌํญ์กฐ์ฐจ๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์๋นํ ์ํฅ์ ๋ฏธ์น ์ ์๋ ๋๊ท๋ชจ ํ๋ก์ ํธ์์ ํนํ ์ ์ฉํฉ๋๋ค.
์ฝ๋ ํ์ง ๊ฐ์ : ๋จ์ํ ๋์ถ์ ๊ฐ์งํ๋ ๊ฒ ์ด์์ผ๋ก, SMART TS XL ์ ๋ํ ์ ์์ ์ ๊ณตํฉ๋๋ค ์ ๋ฐ์ ์ธ ์ฝ๋ ํ์ง ๊ฐ์ ๋ณด๋ค ๊ฒฌ๊ณ ํ๊ณ ์ ์ง ๊ด๋ฆฌ๊ฐ ์ฌ์ฐ๋ฉฐ ๋์์ ๊ฐํ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
ํตํฉํจ์ผ๋ก์จ SMART TS XL ๊ฐ๋ฐ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ๋์ ์ํ์ ํฌ๊ฒ ์ค์ด๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ ์ ์ด๊ณ ํจ์จ์ ์ผ๋ก ์ ์ง๋๋๋ก ํ ์ ์์ต๋๋ค. C++์์ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ๋ค๋ฃจ๋ Java ๋ฐ Python๊ณผ ๊ฐ์ ๊ด๋ฆฌ ์ธ์ด์์ ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ์ฒ๋ฆฌํ๋ , SMART TS XL ๋์ ์์ค์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ์ ๋ฐ์ ์ธ ์ฝ๋ ํ์ง์ ์ ์งํ๋ ๋ฐ ํ์ํ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.