ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๊ด€๋ฆฌ

ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜: ์›์ธ, ํƒ์ง€ ๋ฐ ์˜ˆ๋ฐฉ ์ดํ•ด

๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ž€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ธฐ๋ณธ์ ์ธ ์ธก๋ฉด์œผ๋กœ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์•ˆ์ •์„ฑ๊ณผ ์„ฑ๋Šฅ์— ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์™€ ๊ด€๋ จ๋œ ๊ณผ์ œ ์ค‘ ํ•˜๋‚˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ํ˜„์ƒ์œผ๋กœ, ์ด๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ์ €ํ•˜์‹œํ‚ค๊ฑฐ๋‚˜ ์‹ฌ์ง€์–ด ์ถฉ๋Œ์„ ์ผ์œผํ‚ฌ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ์—์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ๋ฌด์—‡์ธ์ง€, ์›์ธ, ๊ฐ์ง€ ๋ฐฉ๋ฒ•, ๋ฐฉ์ง€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์‹ค์ œ ์ฝ”๋”ฉ ์˜ˆ์ œ๋ฅผ ํฌํ•จํ•˜๊ณ  ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. 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 ๋†’์€ ์ˆ˜์ค€์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์™€ ์ „๋ฐ˜์ ์ธ ์ฝ”๋“œ ํ’ˆ์งˆ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.