SlideShare a Scribd company logo
๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจํ„ด 2
์ฟ ์žฌ์•„์ด
๊น€์žฌ๊ฒฝ
๋ชฉ์ฐจ
1. ๋ช…๋ น (Command)
2. ๊ด€์ฐฐ์ž (Observer)
3. ๊ฐ์ฒด ํ’€ (Object Pool)
๋ช…๋ น
Command
์ž…๋ ฅํ‚ค ๋ณ€๊ฒฝ
โ€ข ๊ทธ๋ฆผ์„ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•ด ๋ณด์ž
์ž…๋ ฅํ‚ค ๋ณ€๊ฒฝ
์ž…๋ ฅํ‚ค ๋ณ€๊ฒฝ
โ€ข ๋งŒ์•ฝ ๊ฒŒ์ž„ ๋„์ค‘ ํ‚ค๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค๋ฉด?
โ€ข ์ ํ”„๋ฅผ X -> Y๋กœ ๋ฐ”๊พผ๋‹ค๋˜์ง€โ€ฆ
์˜ˆ์ œ ์ฝ”๋“œ
โ€ข ๊ณตํ†ต ์ƒ์œ„ ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•œ๋‹ค
์˜ˆ์ œ ์ฝ”๋“œ
โ€ข ๊ฐ ํ–‰๋™๋ณ„๋กœ ํ•˜์œ„ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ ๋‹ค
์˜ˆ์ œ ์ฝ”๋“œ
โ€ข ์ž…๋ ฅ ํ•ธ๋“ค๋Ÿฌ์—๋Š” ๊ฐ ๋ฒ„ํŠผ๋ณ„๋กœ
Command ํด๋ž˜์Šค ํฌ์ธํ„ฐ๋ฅผ
์ €์žฅํ•œ๋‹ค
์˜ˆ์ œ ์ฝ”๋“œ
๊ฒฐ๊ณผ
โ€ข ํ•œ ๊ฒน ์šฐํšŒํ•˜๋Š” ๊ณ„์ธต์ด ์ƒ๊ฒผ๋‹ค
์ข€ ๋” ์œ ์—ฐํ•˜๊ฒŒ
โ€ข ํ˜„์žฌ JumpCommand ํด๋ž˜์Šค๋Š” ์˜ค์ง ํ”Œ๋ ˆ์ด์–ด ์บ๋ฆญํ„ฐ๋งŒ ์ ํ”„ํ•˜๊ฒŒ
๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค
โ€ข ์ด๋Ÿฐ ์ œ์•ฝ์„ ์œ ์—ฐํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ œ์–ดํ•˜๋ ค๋Š” ๊ฐ์ฒด๋ฅผ ํ•จ์ˆ˜์—์„œ
์ง์ ‘ ์ฐพ๊ฒŒ ํ•˜์ง€ ๋ง๊ณ  ๋ฐ–์—์„œ ์ „๋‹ฌํ•ด์ฃผ์ž
์ข€ ๋” ์œ ์—ฐํ•˜๊ฒŒ
์ข€ ๋” ์œ ์—ฐํ•˜๊ฒŒ
๊ฒฐ๊ณผ
โ€ข ๋ช…๋ น์„ ์‹คํ–‰ํ•  ๋•Œ ์•กํ„ฐ๋งŒ ๋ฐ”๊พธ๋ฉด ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ๊ฒŒ์ž„์— ์žˆ๋Š” ์–ด๋–ค ์•กํ„ฐ๋ผ๋„
์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค
โ€ข ํ•จ์ˆ˜๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•˜๋Š” ํ˜•ํƒœ์˜ ๊ฐ•ํ•œ ์ปคํ”Œ๋ง์„ ์ œ๊ฑฐํ•˜์—ฌ ๋ช…๋ น์„ ํ๋‚˜
์ŠคํŠธ๋ฆผ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค
์‹คํ–‰ ์ทจ์†Œ์™€ ์žฌ์‹คํ–‰
โ€ข ๊ฒŒ์ž„์—์„œ ์ด๋™ ์ทจ์†Œ ๊ธฐ๋Šฅ์„
์ถ”๊ฐ€ํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž
์‹คํ–‰ ์ทจ์†Œ์™€ ์žฌ์‹คํ–‰
์‹คํ–‰ ์ทจ์†Œ์™€ ์žฌ์‹คํ–‰
์‹คํ–‰ ์ทจ์†Œ์™€ ์žฌ์‹คํ–‰
์‹คํ–‰ ์ทจ์†Œ์™€ ์žฌ์‹คํ–‰
๊ด€์ฐฐ์ž
Observer
์—…์  ๋‹ฌ์„ฑ์„ ๊ตฌํ˜„ํ•ด ๋ณด์ž
โ€ข โ€˜๋ชฌ์Šคํ„ฐ 100๋งˆ๋ฆฌ ์ฃฝ์ด๊ธฐโ€™ ๊ฐ™์€ ์—…์  ์‹œ์Šคํ…œ์„ ์ถ”๊ฐ€ํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž
๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฐ ์—…์ ์ด ์ˆ˜๋ฐฑ ๊ฐœ๊ฐ€ ๋„˜๋Š”๋‹ค๊ณ  ํ•˜์ž
โ€ข ์—…์  ์ข…๋ฅ˜๊ฐ€ ๊ด‘๋ฒ”์œ„ํ•˜๊ณ  ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•๋„ ๋‹ค์–‘ํ•˜๋‹ค ๋ณด๋‹ˆ
๊น”๋”ํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค
โ€ข ์ถฉ๋Œ ๊ฒ€์‚ฌ ๊ณ„์‚ฐ ์ฝ”๋“œ ํ•œ๊ฐ€์šด๋ฐ์—์„œ โ€˜๋‹ค๋ฆฌ์—์„œ ๋–จ์–ด์ง€๊ธฐ ์—…์  ํ•ด์ œโ€™ ํ•จ์ˆ˜๋ฅผ
ํ˜ธ์ถœํ•˜๊ณ  ์‹ถ์ง„ ์•Š์„ ๊ฒƒ์ด๋‹ค
์—…์  ๋‹ฌ์„ฑ์„ ๊ตฌํ˜„ํ•ด ๋ณด์ž
โ€ข ํŠน์ • ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•˜๋Š” ์ฝ”๋“œ๋Š” ํ•ญ์ƒ ํ•œ๋ฐ ๋ชจ์•„๋‘๋Š” ๊ฒŒ ์ข‹๋‹ค
โ€ข ๋ฌธ์ œ๋Š” ์—…์ ์„ ์—ฌ๋Ÿฌ ๊ฒŒ์ž„ ํ”Œ๋ ˆ์ด ์š”์†Œ์—์„œ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค
โ€ข ์ด๋Ÿฐ ์ฝ”๋“œ ์ „๋ถ€์™€ ์ปคํ”Œ๋ง๋˜์ง€ ์•Š๊ณ ๋„ ์—…์  ์ฝ”๋“œ๊ฐ€ ๋™์ž‘ํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด?
์—…์  ๋‹ฌ์„ฑ์„ ๊ตฌํ˜„ํ•ด ๋ณด์ž
โ€ข ๋ฌผ์ฒด๊ฐ€ ํ‘œ๋ฉด์— ๋†“์—ฌ ์žˆ๋Š”์ง€, ๋ฐ”๋‹ฅ์œผ๋กœ ์ถ”๋ฝํ•˜๋Š”์ง€๋ฅผ ์ถ”์ ํ•˜๋Š” ๋ฌผ๋ฆฌ ์ฝ”๋“œ๊ฐ€
์žˆ๋‹ค๊ณ  ํ•ด๋ณด์ž
โ€ข โ€˜๋‹ค๋ฆฌ์—์„œ ๋–จ์–ด์ง€๊ธฐโ€™ ์—…์ ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์—…์  ์ฝ”๋“œ๋ฅผ ๋ฌผ๋ฆฌ ์ฝ”๋“œ์—
๋„ฃ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋Ÿฌ๋ฉด ์ฝ”๋“œ๊ฐ€ ์ง€์ €๋ถ„ํ•ด์ง„๋‹ค
โ€ข ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด๋ณด์ž
์—…์  ๋‹ฌ์„ฑ์„ ๊ตฌํ˜„ํ•ด ๋ณด์ž
์ด ์ฝ”๋“œ๋Š” โ€˜์ด๊ฒŒ ๋ฐฉ๊ธˆ ๋–จ์–ด์ง€๊ธฐ ์‹œ์ž‘ํ–ˆ์œผ๋‹ˆ ๋ˆ„๊ตฐ์ง€๋Š” ๋ชฐ๋ผ๋„ ์•Œ์•„์„œ ํ•˜์‹œ์˜คโ€™๋ผ๊ณ  ์•Œ๋ ค์ฃผ๋Š” ๊ฒŒ ์ „๋ถ€๋‹ค
์—…์  ๋‹ฌ์„ฑ์„ ๊ตฌํ˜„ํ•ด ๋ณด์ž
โ€ข ์—…์  ์‹œ์Šคํ…œ์€ ๋ฌผ๋ฆฌ ์—”์ง„์ด ์•Œ๋ฆผ์„ ๋ณด๋‚ผ ๋•Œ๋งˆ๋‹ค ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ์Šค์Šค๋กœ๋ฅผ
๋“ฑ๋กํ•œ๋‹ค
โ€ข ์—…์  ์‹œ์Šคํ…œ์€ ๋–จ์–ด์ง€๋Š” ๋ฌผ์ฒด๊ฐ€ ์บ๋ฆญํ„ฐ๊ฐ€ ๋งž๋Š”์ง€, ๋–จ์–ด์ง€๊ธฐ ์ „์— ๋‹ค๋ฆฌ ์œ„์—
์žˆ์—ˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•œ ๋’ค์— ์—…์  ์ž ๊ธˆ์„ ํ•ด์ œํ•œ๋‹ค
โ€ข ์ด๋Ÿฐ ๊ณผ์ •์„ ๋ฌผ๋ฆฌ ์ฝ”๋“œ๋Š” ์ „ํ˜€ ๋ชฐ๋ผ๋„ ๋œ๋‹ค
์—…์  ๋‹ฌ์„ฑ์„ ๊ตฌํ˜„ํ•ด ๋ณด์ž
โ€ข ๋ฌผ๋ฆฌ ์—”์ง„ ์ฝ”๋“œ๋Š” ์ „ํ˜€ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์€ ์ฑ„๋กœ ์—…์  ๋ชฉ๋ก์„ ๋ฐ”๊พธ๊ฑฐ๋‚˜
์•„์˜ˆ ์—…์  ์‹œ์Šคํ…œ์„ ๋–ผ์–ด๋‚ผ ์ˆ˜๋„ ์žˆ๋‹ค
โ€ข ๋ฌผ๋ฆฌ ์—”์ง„ ์ฝ”๋“œ๋Š” ๋ˆ„๊ฐ€ ๋ฐ›๋“  ๋ง๋“  ๊ณ„์† ์•Œ๋ฆผ์„ ๋ณด๋‚ธ๋‹ค
๊ด€์ฐฐ์ž
๊ด€์ฐฐ์ž
โ€ข ์–ด๋–ค ํด๋ž˜์Šค๋“  Observer
์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ๋งŒ
ํ•˜๋ฉด ๊ด€์ฐฐ์ž๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค
๋Œ€์ƒ
โ€ข Notify ํ•จ์ˆ˜๋Š” ๊ด€์ฐฐ๋‹นํ•˜๋Š”
๊ฐ์ฒด๊ฐ€ ํ˜ธ์ถœํ•œ๋‹ค.
โ€ข ์ด๋Ÿฐ ๊ฐ์ฒด๋ฅผ ๋Œ€์ƒ(Subject)
์ด๋ผ ๋ถ€๋ฅธ๋‹ค
๊ฒฐ๊ณผ
โ€ข Subject๋Š” Observer์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜์ง€๋งŒ ์„œ๋กœ ์ปคํ”Œ๋ง๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค
โ€ข ๋ฌผ๋ฆฌ ์ฝ”๋“œ ์–ด๋””์—๋„ ์—…์ ๊ณผ ๊ด€๋ จ๋œ ๋ถ€๋ถ„์€ ์—†์ง€๋งŒ ์—…์  ์‹œ์Šคํ…œ์œผ๋กœ
์•Œ๋ฆผ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค
โ€ข Observer๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋ฉด Observer๋“ค์ด ๊ฐ๊ฐ ๋…๋ฆฝ์ ์œผ๋กœ
๋‹ค๋ค„์ง€๋Š” ๊ฑธ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค
๋‚จ์€ ์ž‘์—…
โ€ข ๋ฌผ๋ฆฌ ์—”์ง„์ด ์•Œ๋ฆผ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์ž
โ€ข ์‹ค์ œ ์ฝ”๋“œ์˜€๋‹ค๋ฉด ์ƒ์† ๋Œ€์‹  Subject ์ธ์Šคํ„ด์Šค๋ฅผ ํฌํ•จํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ์„ ๊ฒƒ์ด๋‹ค
์ฃผ์˜ํ•  ์  1
โ€ข ํŒจํ„ด์ด ๋™๊ธฐ์ ์ด๋‹ค. ๋ชจ๋“  Observer๊ฐ€ Notify ํ•จ์ˆ˜๋ฅผ ๋๋‚ด๊ธฐ ์ „์—๋Š” ๋‹ค์Œ
์ž‘์—…์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์—†๋‹ค
โ€ข Observer ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋А๋ฆฌ๋ฉด ๋Œ€์ƒ์ด ๋ธ”๋ก๋  ์ˆ˜ ์žˆ๋‹ค
โ€ข ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์กฐ์‹ฌํ•ด์•ผ ํ•œ๋‹ค. ์–ด๋–ค Observer๊ฐ€ Subject์˜
๋ฝ์„ ๋ฌผ๊ณ  ์žˆ๋‹ค๋ฉด ๊ฒŒ์ž„ ์ „์ฒด๊ฐ€ ๊ต์ฐฉ์ƒํƒœ์— ๋น ์งˆ ์ˆ˜ ์žˆ๋‹ค
์ฃผ์˜ํ•  ์  2
โ€ข Observer๋ฅผ ๋ถ€์ฃผ์˜ํ•˜๊ฒŒ ์‚ญ์ œํ•˜๋‹ค ๋ณด๋ฉด Dangling Pointer๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค
โ€ข Subject๋ฅผ ์‚ญ์ œํ•œ ํ›„ ๋” ์ด์ƒ ์•Œ๋ฆผ์„ ๋ฐ›์„ ์ˆ˜ ์—†๋Š”๋ฐ๋„ Observer๊ฐ€ ์•Œ๋ฆผ์„
๊ธฐ๋‹ค๋ฆด ์ˆ˜๋„ ์žˆ๋‹ค
โ€ข Observer๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด Subject์— ์žˆ๋Š” Observer๋“ค๋„ ์ œ๊ฑฐ๋ผ์•ผ ํ•œ๋‹ค
GC๊ฐ€ ์žˆ๋Š”๋ฐ์š”?
โ€ข GC๊ฐ€ ์žˆ๋Š” ์–ธ์–ด๋Š” ๋ช…์‹œ์ ์œผ๋กœ ์‚ญ์ œํ•˜์ง€ ์•Š์•„๋„ ๋ ๊นŒ?
โ€ข ์บ๋ฆญํ„ฐ ์ฒด๋ ฅ ๊ฐ™์€ ์ƒํƒœ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” UI ํ™”๋ฉด์„ ์ƒ๊ฐํ•ด๋ณด์ž
1. ์œ ์ €๊ฐ€ ์ƒํƒœ์ฐฝ์„ ์—ด๋ฉด ์ƒํƒœ์ฐฝ UI ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค
2. ์ƒํƒœ์ฐฝ์„ ๋‹ซ์œผ๋ฉด UI ๊ฐ์ฒด๋ฅผ ๋”ฐ๋กœ ์‚ญ์ œํ•˜์ง€ ์•Š๊ณ  GC๊ฐ€ ์•Œ์•„์„œ ์ •๋ฆฌํ•˜๊ฒŒ ํ•œ๋‹ค
GC๊ฐ€ ์žˆ๋Š”๋ฐ์š”?
โ€ข ์บ๋ฆญํ„ฐ๊ฐ€ ์–ด๋–ค ํ–‰์œ„๋กœ UI ์ฐฝ์— ์•Œ๋ฆผ์„ ๋ณด๋‚ด UI๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค
โ€ข ์œ ์ €๊ฐ€ ์ƒํƒœ์ฐฝ์„ ๋‹ซ์œผ๋ฉด?
1. UI๋Š” ๋ณด์ด์ง€ ์•Š์ง€๋งŒ ์บ๋ฆญํ„ฐ๋Š” ์—ฌ์ „ํžˆ ์ƒํƒœ์ฐฝ UI๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋‹ค
๋”ฐ๋ผ์„œ GC๊ฐ€ ์ˆ˜๊ฑฐํ•ด ๊ฐ€์ง€ ์•Š๊ณ  ์•Œ๋ฆผ์ด ๊ณ„์† ๋ณด๋‚ด์ง„๋‹ค
2. ์ƒํƒœ์ฐฝ์„ ์—ด ๋•Œ๋งˆ๋‹ค ์ƒํƒœ์ฐฝ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด Observer ๋ชฉ๋ก์ด ์ ์ 
์ปค์ง„๋‹ค
โ€ข ์ด๋ฅผ ์‚ฌ๋ผ์ง„ ๋ฆฌ์Šค๋„ˆ ๋ฌธ์ œ(Lapsed listener Problem)์ด๋ผ ํ•œ๋‹ค
์ฃผ์˜ํ•  ์  3
โ€ข ๋ฒ„๊ทธ๊ฐ€ ์—ฌ๋Ÿฌ Observer์— ํผ์ ธ ์žˆ๋‹ค๋ฉด ์ƒํ˜ธ ์ž‘์šฉ ํ๋ฆ„์„ ์ถ”๋ก ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค
โ€ข ์‹ค์ œ๋กœ ์–ด๋–ค Observer๊ฐ€ ์•Œ๋ฆผ์„ ๋ฐ›๋Š”์ง€๋Š” ๋Ÿฐํƒ€์ž„์—์„œ ํ™•์ธํ•  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค
โ€ข ์ฆ‰, ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ฝ”๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š”์ง€๋ฅผ ์ •์ ์œผ๋กœ๋Š” ์•Œ ์ˆ˜ ์—†๊ณ 
๋™์ ์œผ๋กœ ์ถ”๋ก ํ•ด์•ผ ํ•œ๋‹ค
๋ฏธ๋ž˜์˜ ๊ด€์ฐฐ์ž
โ€ข Dataflow Programming
ex) ์–ธ๋ฆฌ์–ผ์˜ ๋ธ”๋ฃจํ”„๋ฆฐํŠธ, ์œ ๋‹ˆํ‹ฐ์˜ ๋ฉ”์นด๋‹˜
โ€ข Functional Reactive Programming
โ€ข Data Binding
๊ฐ์ฒด ํ’€
Object Pool
์˜๋„
โ€ข ๊ฐ์ฒด๋ฅผ ๋งค๋ฒˆ ํ• ๋‹น, ํ•ด์ œํ•˜์ง€ ์•Š๊ณ  ๊ณ ์ • ํฌ๊ธฐ ํ’€์— ๋“ค์–ด ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ
์žฌ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•œ๋‹ค
๋™๊ธฐ
โ€ข ํŒŒํ‹ฐํด ์‹œ์Šคํ…œ์„ ์˜ˆ๋กœ ๋“ค์ž
โ€ข ํ•œ ๋ฒˆ์— ์ˆ˜๋ฐฑ ๊ฐœ์˜ ํŒŒํ‹ฐํด์ด ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํŒŒํ‹ฐํด์„ ๊ต‰์žฅํžˆ
๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค
โ€ข ๋” ์ค‘์š”ํ•œ ๊ฒƒ์€ ํŒŒํ‹ฐํด์„ ์ƒ์„ฑ, ์ œ๊ฑฐํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๋‹จํŽธํ™”๊ฐ€
์ƒ๊ฒจ์„œ๋Š” ์•ˆ ๋œ๋‹ค
ํŒจํ„ด
โ€ข ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋“ค์„ ๋ชจ์•„๋†“์€ Object Pool ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•œ๋‹ค
โ€ข ์—ฌ๊ธฐ์— ๋“ค์–ด๊ฐ€๋Š” ๊ฐ์ฒด๋Š” ํ˜„์žฌ ์ž์‹ ์ด โ€˜์‚ฌ์šฉ ์ค‘โ€™์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š”
๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ด์•ผ ํ•œ๋‹ค
โ€ข ํ’€์€ ์ดˆ๊ธฐํ™”๋  ๋•Œ ์‚ฌ์šฉํ•  ๊ฐ์ฒด๋“ค์„ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•˜๊ณ  ์ด๋“ค ๊ฐ์ฒด๋ฅผ
โ€˜์‚ฌ์šฉ ์•ˆ ํ•จโ€™ ์ƒํƒœ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค
ํŒจํ„ด
โ€ข ์ƒˆ๋กœ์šด ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•˜๋ฉด ํ’€์— ์š”์ฒญํ•œ๋‹ค
โ€ข ํ’€์€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋ฅผ ์ฐพ์•„ โ€˜์‚ฌ์šฉ ์ค‘โ€™์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ ๋’ค ๋ฐ˜ํ™˜ํ•œ๋‹ค
โ€ข ๊ฐ์ฒด๋ฅผ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด โ€˜์‚ฌ์šฉ ์•ˆ ํ•จโ€™ ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆฐ๋‹ค
์–ธ์ œ ์“ธ ๊ฒƒ์ธ๊ฐ€?
โ€ข ๊ฐ์ฒด๋ฅผ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์ƒ์„ฑ/์‚ญ์ œํ•ด์•ผ ํ•œ๋‹ค
โ€ข ๊ฐ์ฒด๋“ค์˜ ํฌ๊ธฐ๊ฐ€ ๋น„์Šทํ•˜๋‹ค
โ€ข ๊ฐ์ฒด๋ฅผ ํž™์— ์ƒ์„ฑํ•˜๊ธฐ๊ฐ€ ๋А๋ฆฌ๊ฑฐ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ๋‹จํŽธํ™”๊ฐ€ ์šฐ๋ ค๋œ๋‹ค
โ€ข ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ์ด๋‚˜ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ๊ฐ™์ด ์ ‘๊ทผ ๋น„์šฉ์ด ๋น„์‹ธ๋ฉด์„œ
์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ž์›์„ ๊ฐ์ฒด๊ฐ€ ์บก์Аํ™”ํ•˜๊ณ  ์žˆ๋‹ค
์ฃผ์˜ ์‚ฌํ•ญ
โ€ข Object Pool์„ ์“ฐ๊ฒ ๋‹ค๋Š” ๊ฒƒ์€
โ€˜๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ์ง€๋ฅผ ๋‚ด๊ฐ€ ๋” ์ž˜ ์•ˆ๋‹คโ€™๋ผ๊ณ  ์„ ์–ธํ•˜๋Š” ์…ˆ์ด๋‹ค
โ€ข ์ฆ‰, Object Pool์˜ ํ•œ๊ณ„๋„ ์ง์ ‘ ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค
์ฃผ์˜ ์‚ฌํ•ญ
1. ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„์™€ ๋‹ค๋ฅผ ๋ฐ” ์—†๋‹ค
โ€ข ํ•„์š”์— ๋”ฐ๋ผ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•ด์•ผ ํ•œ๋‹ค
โ€ข ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์ž‘์œผ๋ฉด (ํฌ๋ž˜์‹œ๊ฐ€ ๋‚  ํ…Œ๋‹ˆ) ๋ฐ”๋กœ ์•Œ ์ˆ˜ ์žˆ๋‹ค
โ€ข ํ•˜์ง€๋งŒ ๋„ˆ๋ฌด ์ปค์ง€์ง€๋„ ์•Š๋„๋ก ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค
์ฃผ์˜ ์‚ฌํ•ญ
2. ํ•œ ๋ฒˆ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด ๊ฐœ์ˆ˜๊ฐ€ ์ •ํ•ด์ ธ ์žˆ๋‹ค
โ€ข Object Pool์˜ ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ์‚ฌ์šฉ ์ค‘์ด์–ด์„œ ์žฌ์‚ฌ์šฉํ•  ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜๋ฐ›์ง€
๋ชปํ•  ๋•Œ๋ฅผ ๋Œ€๋น„ํ•ด์•ผ ํ•œ๋‹ค
โ€ข ๋ช‡ ๊ฐ€์ง€ ๋Œ€๋น„์ฑ…์ด ์žˆ๋‹ค
์ฃผ์˜ ์‚ฌํ•ญ
2. ํ•œ ๋ฒˆ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด ๊ฐœ์ˆ˜๊ฐ€ ์ •ํ•ด์ ธ ์žˆ๋‹ค
1) ์ด๋Ÿฐ ์ผ์ด ์•„์˜ˆ ์ƒ๊ธฐ์ง€ ์•Š๊ฒŒ ํ•œ๋‹ค
โ€ข ๊ฐ€์žฅ ํ”ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ป๊ฒŒ ํ•˜๋”๋ผ๋„ ํ’€์ด ์ ˆ๋Œ€ ๋ถ€์กฑํ•˜์ง€
์•Š๋„๋ก ํ’€์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•œ๋‹ค
โ€ข ์ ์ด๋‚˜ ์•„์ดํ…œ๊ฐ™์ด ์ค‘์š”ํ•œ Object Pool์—์„œ๋Š” ์ด๊ฒŒ ๋‹ต์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค
โ€ข ๋ช‡ ๋ฒˆ ์—†์„ ์ตœ์•…์˜ ์ƒํ™ฉ์— ๋งž์ถฐ์„œ ํ’€์˜ ํฌ๊ธฐ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒŒ ๋‹จ์ ์ด๋‹ค
์ฃผ์˜ ์‚ฌํ•ญ
2. ํ•œ ๋ฒˆ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด ๊ฐœ์ˆ˜๊ฐ€ ์ •ํ•ด์ ธ ์žˆ๋‹ค
2) ๊ทธ๋ƒฅ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค
โ€ข ํŒŒํ‹ฐํด ์‹œ์Šคํ…œ ๊ฐ™์€ ๊ณณ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค
โ€ข ๋ชจ๋“  ํŒŒํ‹ฐํด์ด ์‚ฌ์šฉ ์ค‘์ด๋ผ๋ฉด ์ด๋ฏธ ๋ฒˆ์ฉ๊ฑฐ๋ฆฌ๋Š” ๊ทธ๋ž˜ํ”ฝ์ด ํ™”๋ฉด์„ ๋’ค๋ฎ๊ณ 
์žˆ๋‹ค๋Š” ์–˜๊ธฐ๋‹ค. ์ด๋Ÿด ๋•Œ ์ƒˆ๋กœ์šด ํญ๋ฐœ ์ดํŽ™ํŠธ๋Š” ์ด์ „ ๊ฒƒ๋ณด๋‹ค ํ™”๋ คํ•˜๊ฒŒ
ํ„ฐ์ง€์ง€ ์•Š๋Š” ์ด์ƒ ๊ทธ๋‹ค์ง€ ๋ˆˆ์— ๋„์ง€ ์•Š๋Š”๋‹ค
์ฃผ์˜ ์‚ฌํ•ญ
2. ํ•œ ๋ฒˆ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด ๊ฐœ์ˆ˜๊ฐ€ ์ •ํ•ด์ ธ ์žˆ๋‹ค
3) ๊ธฐ์กด ๊ฐ์ฒด๋ฅผ ๊ฐ•์ œ๋กœ ์ œ๊ฑฐํ•œ๋‹ค
โ€ข ํ’€์ด ๊ฝ‰์ฐฌ ์ƒํƒœ์—์„œ ์ƒˆ๋กœ์šด ์‚ฌ์šด๋“œ๋ฅผ ํ‹€์–ด์•ผ ํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž
โ€ข ๋งŒ์•ฝ ์ƒˆ๋กœ์šด ์‚ฌ์šด๋“œ ์ƒ์„ฑ์„ ๋ฌด์‹œํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด ์žฌ์ƒ ์ค‘์ธ ์‚ฌ์šด๋“œ ์ค‘์—์„œ
๊ฐ€์žฅ ์†Œ๋ฆฌ๊ฐ€ ์ž‘์€ ๊ฒƒ์„ ์ƒˆ๋กœ์šด ์‚ฌ์šด๋“œ๋กœ ๊ต์ฒดํ•˜๋Š” ๊ฒŒ ๋‚ซ๋‹ค
์ฃผ์˜ ์‚ฌํ•ญ
2. ํ•œ ๋ฒˆ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด ๊ฐœ์ˆ˜๊ฐ€ ์ •ํ•ด์ ธ ์žˆ๋‹ค
4) ํ’€์˜ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฐ๋‹ค
โ€ข ์ถ”๊ฐ€๋กœ ๋Š˜๋ฆฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋” ์ด์ƒ ์“ฐ์ง€ ์•Š์„ ๋•Œ๋Š” ํ’€์˜ ํฌ๊ธฐ๋ฅผ ์›๋ž˜๋Œ€๋กœ
์ค„์ผ ๊ฒƒ์ธ์ง€ ๊ทธ๋Œ€๋กœ ๋‘˜์ง€๋ฅผ ์ •ํ•ด์•ผ ํ•œ๋‹ค
์ฃผ์˜ ์‚ฌํ•ญ
3. ๊ฐ์ฒด๋ฅผ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋Š” ๊ณ ์ •๋˜์–ด ์žˆ๋‹ค
โ€ข ํ’€์— ๋“ค์–ด๊ฐ€๋Š” ๊ฐ์ฒด๊ฐ€ ์ „๋ถ€ ๊ฐ™์€ ์ž๋ฃŒํ˜•์ด๋ผ๋ฉด ์ƒ๊ด€์—†๋‹ค
โ€ข ๋‹ค๋ฅธ ์ž๋ฃŒํ˜•์ธ ๊ฐ์ฒด๋‚˜ ํ•„๋“œ๊ฐ€ ์ถ”๊ธฐ๋œ ํ•˜์œ„ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ™์€
ํ’€์— ๋„ฃ๊ณ  ์‹ถ๋‹ค๋ฉด ํ’€์˜ ๋ฐฐ์—ด ํ•œ ์นธ ํฌ๊ธฐ๋ฅผ ํฌ๊ธฐ๊ฐ€ ๊ฐ€์žฅ ํฐ ์ž๋ฃŒํ˜•์— ๋งž์ถฐ์•ผ
ํ•œ๋‹ค
โ€ข ์ƒํ™ฉ์— ๋”ฐ๋ผ์„œ๋Š” ๊ฐ์ฒด ํฌ๊ธฐ๋ณ„๋กœ ํ’€์„ ๋‚˜๋ˆ„๋Š” ๊ฒŒ ์ข‹๋‹ค
์ฃผ์˜ ์‚ฌํ•ญ
4. ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด๋Š” ์ €์ ˆ๋กœ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š๋Š”๋‹ค
โ€ข ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋กœ ํ• ๋‹น๋ฐ›์€ ๋ฉ”๋ชจ๋ฆฌ์—๋Š” ์ด์ „ ๊ฐ์ฒด์˜ ์ƒํƒœ๊ฐ€ ๊ฑฐ์˜ ๊ทธ๋Œ€๋กœ
๋“ค์–ด ์žˆ์–ด์„œ ์ดˆ๊ธฐํ™”๋ฅผ ํ–ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ตฌ๋ณ„ํ•˜๊ธฐ๊ฐ€ ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค
โ€ข ๋•Œ๋ฌธ์— ํ’€์—์„œ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ์—๋Š” ์ฃผ์˜ํ•ด์„œ ๊ฐ์ฒด๋ฅผ ์™„์ „ํžˆ
์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•œ๋‹ค
โ€ข ๊ฐ์ฒด๋ฅผ ํšŒ์ˆ˜ํ•  ๋•Œ ๊ฐ์ฒด๊ฐ€ ๋“ค์–ด ์žˆ๋Š” ๋ฐฐ์—ด์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‹น ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋””๋ฒ„๊น…
๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๋„ ๊ณ ๋ คํ•ด๋ณผ๋งŒ ํ•˜๋‹ค
์ฃผ์˜ ์‚ฌํ•ญ
5. ์‚ฌ์šฉ ์ค‘์ด์ง€ ์•Š์€ ๊ฐ์ฒด๋„ ๋ฉ”๋ชจ๋ฆฌ์— ๋‚จ์•„ ์žˆ๋‹ค
โ€ข GC์™€ Object Pool์„ ๊ฐ™์ด ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ถฉ๋Œ์— ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค
โ€ข ํ’€์—์„œ๋Š” ๊ฐ์ฒด๊ฐ€ ์‚ฌ์šฉ ์ค‘์ด ์•„๋‹ˆ์–ด๋„ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—
๊ฐ์ฒด๊ฐ€ ๊ณ„์† ๋ฉ”๋ชจ๋ฆฌ์— ๋‚จ๋Š”๋‹ค
โ€ข ์ด ๋•Œ ์ด๋“ค ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋‹ค๋ฉด GC์—์„œ ๊ทธ ๊ฐ์ฒด๋ฅผ ํšŒ์ˆ˜ํ• 
์ˆ˜ ์—†๋‹ค
์˜ˆ์ œ ์ฝ”๋“œ
์˜ˆ์ œ ์ฝ”๋“œ
์˜ˆ์ œ ์ฝ”๋“œ
์˜ˆ์ œ ์ฝ”๋“œ
๋นˆ์นธ ๋ฆฌ์ŠคํŠธ
โ€ข ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํŒŒํ‹ฐํด์„ ์ฐพ๊ธฐ ์œ„ํ•ด ์ „์ฒด ์ˆœํšŒ๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค
โ€ข ๋ฐฐ์—ด์ด ๋งค์šฐ ์ปค์ง„๋‹ค๋ฉด ์ด ์ž‘์—…์ด ๋А๋ฆด ์ˆ˜ ์žˆ๋‹ค
โ€ข ๊ฐœ์„ ํ•ด๋ณด์ž
๋นˆ์นธ ๋ฆฌ์ŠคํŠธ
โ€ข ํŒŒํ‹ฐํด์ด ์‚ฌ์šฉ ์ค‘์ด๋ฉด live๋ฅผ,
๋ฏธ์‚ฌ์šฉ ์ค‘์ด๋ฉด next๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค
๋นˆ์นธ ๋ฆฌ์ŠคํŠธ
๋นˆ์นธ ๋ฆฌ์ŠคํŠธ
๋นˆ์นธ ๋ฆฌ์ŠคํŠธ
๋นˆ์นธ ๋ฆฌ์ŠคํŠธ
๋นˆ์นธ ๋ฆฌ์ŠคํŠธ
๋””์ž์ธ ๊ฒฐ์ •
โ€ข ์‹ค์ œ ์ œํ’ˆ ์ฝ”๋“œ์—์„œ๋Š” ๋ณดํ†ต ์ด ์ •๋„๋กœ๋Š” ๋ถ€์กฑํ•˜๋‹ค
โ€ข ๋ช‡ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ Object Pool์„ ๋” ์ผ๋ฐ˜์ ์ด๋ฉด์„œ ์•ˆ์ „ํ•˜๊ฑฐ๋‚˜ ์œ ์ง€๋ณด์ˆ˜
ํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค
โ€ข ๊ฒŒ์ž„์— Object Pool์„ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ฌํ•ญ์„ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค
์ฃผ์˜ ์‚ฌํ•ญ
1. ํ’€์ด ๊ฐ์ฒด์™€ ์ปคํ”Œ๋ง๋˜๋Š”๊ฐ€?
โ€ข ๊ฐ์ฒด๊ฐ€ ์ž์‹ ์ด ํ’€์— ๋“ค์–ด ์žˆ๋Š”์ง€๋ฅผ ์•Œ๊ฒŒ ํ•  ๊ฒƒ์ธ์ง€๋ถ€ํ„ฐ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค
โ€ข ์•„๋ฌด ๊ฐ์ฒด๋‚˜ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ์ผ๋ฐ˜์ ์ธ ํ’€ ํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค๋ฉด
์ด๋Ÿฐ ์ƒํƒœ๋ฅผ ๋”ฐ๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค
์ฃผ์˜ ์‚ฌํ•ญ
1. ํ’€์ด ๊ฐ์ฒด์™€ ์ปคํ”Œ๋ง๋˜๋Š”๊ฐ€?
1) ๊ฐ์ฒด๊ฐ€ ํ’€๊ณผ ์ปคํ”Œ๋ง ๋œ๋‹ค๋ฉด
โ€ข ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค
โ€ข ํ’€์— ๋“ค์–ด๊ฐ€๋Š” ๊ฐ์ฒด์— โ€˜์‚ฌ์šฉ ์ค‘โ€™ ํ”Œ๋ž˜๊ทธ๋‚˜ ์ด๋Ÿฐ ์—ญํ• ์„ ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜
๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค
์ฃผ์˜ ์‚ฌํ•ญ
1. ํ’€์ด ๊ฐ์ฒด์™€ ์ปคํ”Œ๋ง๋˜๋Š”๊ฐ€?
1) ๊ฐ์ฒด๊ฐ€ ํ’€๊ณผ ์ปคํ”Œ๋ง ๋œ๋‹ค๋ฉด
โ€ข ๊ฐ์ฒด๊ฐ€ ํ’€์„ ํ†ตํ•ด์„œ๋งŒ ์ƒ์„ฑํ• 
์ˆ˜ ์žˆ๋„๋ก ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ๋‹ค
์ฃผ์˜ ์‚ฌํ•ญ
1. ํ’€์ด ๊ฐ์ฒด์™€ ์ปคํ”Œ๋ง๋˜๋Š”๊ฐ€?
1) ๊ฐ์ฒด๊ฐ€ ํ’€๊ณผ ์ปคํ”Œ๋ง ๋œ๋‹ค๋ฉด
โ€ข โ€˜์‚ฌ์šฉ ์ค‘โ€™ ํ”Œ๋ž˜๊ทธ๊ฐ€ ๊ผญ ํ•„์š”ํ•œ ๊ฑด ์•„๋‹ ์ˆ˜๋„ ์žˆ๋‹ค
โ€ข ๊ฐ์ฒด์— ์ž์‹ ์ด ์‚ฌ์šฉ ์ค‘์ธ์ง€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๊ฐ€ ์ด๋ฏธ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค
์ฃผ์˜ ์‚ฌํ•ญ
1. ํ’€์ด ๊ฐ์ฒด์™€ ์ปคํ”Œ๋ง๋˜๋Š”๊ฐ€?
2) ๊ฐ์ฒด๊ฐ€ ํ’€๊ณผ ์ปคํ”Œ๋ง๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด
โ€ข ์–ด๋–ค ๊ฐ์ฒด๋ผ๋„ ํ’€์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค
โ€ข ๊ฐ์ฒด์™€ ํ’€์„ ๋””์ปคํ”Œ๋งํ•จ์œผ๋กœ์จ ์ผ๋ฐ˜์ ์ด๋ฉด์„œ๋„ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ
ํ’€ ํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค
์ฃผ์˜ ์‚ฌํ•ญ
1. ํ’€์ด ๊ฐ์ฒด์™€ ์ปคํ”Œ๋ง๋˜๋Š”๊ฐ€?
2) ๊ฐ์ฒด๊ฐ€ ํ’€๊ณผ ์ปคํ”Œ๋ง๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด
โ€ข โ€˜์‚ฌ์šฉ ์ค‘โ€™ ์ƒํƒœ๋ฅผ ๊ฐ์ฒด ์™ธ๋ถ€์—์„œ
๊ด€๋ฆฌํ•ด์•ผ ํ•œ๋‹ค
โ€ข ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ๋น„ํŠธ ํ•„๋“œ๋ฅผ
๋”ฐ๋กœ ๋‘๋Š” ๊ฒƒ์ด๋‹ค
์ฃผ์˜ ์‚ฌํ•ญ
2. ์žฌ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ
โ€ข ๊ธฐ์กด ๊ฐ์ฒด๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ์ƒํƒœ๋ฅผ ์ƒˆ๋กœ ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•œ๋‹ค
โ€ข ์ด ๋•Œ ๊ฐ์ฒด ์ดˆ๊ธฐํ™”๋ฅผ ํด๋ž˜์Šค ์•ˆ์—์„œ ํ• ์ง€, ๋ฐ–์—์„œ ํ• ์ง€๋ฅผ ์ •ํ•ด์•ผ ํ•œ๋‹ค
์ฃผ์˜ ์‚ฌํ•ญ
2. ์žฌ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ
1) ๊ฐ์ฒด๋ฅผ ํ’€ ์•ˆ์—์„œ ์ดˆ๊ธฐํ™” ํ•œ๋‹ค๋ฉด
โ€ข ํ’€์€ ๊ฐ์ฒด๋ฅผ ์™„์ „ํžˆ ์บก์Аํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค
โ€ข ์ž˜ํ•˜๋ฉด ๊ฐ์ฒด๋ฅผ ํ’€ ๋‚ด๋ถ€์— ์™„์ „ํžˆ ์ˆจ๊ธธ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌ๋ฉด ๋ฐ–์—์„œ ๊ฐ์ฒด๋ฅผ ์•„์˜ˆ
์ฐธ์กฐํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์˜ˆ์ƒ์น˜ ๋ชปํ•˜๊ฒŒ ์žฌ์‚ฌ์šฉ๋˜๋Š” ๊ฑธ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค
์ฃผ์˜ ์‚ฌํ•ญ
2. ์žฌ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ
1) ๊ฐ์ฒด๋ฅผ ํ’€ ์•ˆ์—์„œ ์ดˆ๊ธฐํ™” ํ•œ๋‹ค๋ฉด
โ€ข ํ’€ ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด๊ฐ€ ์ดˆ๊ธฐํ™”๋˜๋Š” ๋ฐฉ๋ฒ•๊ณผ
๊ฒฐํ•ฉ๋œ๋‹ค
โ€ข ํ’€์— ๋“ค์–ด๊ฐ€๋Š” ๊ฐ์ฒด ์ค‘์—๋Š” ์ดˆ๊ธฐํ™” ํ•จ์ˆ˜๋ฅผ
์—ฌ๋Ÿฌ ๊ฐœ ์ง€์›ํ•˜๋Š” ๊ฒŒ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค
์ฃผ์˜ ์‚ฌํ•ญ
2. ์žฌ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ
2) ๊ฐ์ฒด๋ฅผ ํ’€ ๋ฐ–์—์„œ ์ดˆ๊ธฐํ™” ํ•œ๋‹ค๋ฉด
โ€ข ํ’€์˜ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋‹จ์ˆœํ•ด์ง„๋‹ค
โ€ข ํ’€์€ ๊ฐ์ฒด ์ดˆ๊ธฐํ™” ํ•จ์ˆ˜๋ฅผ ์ „๋ถ€ ์ œ๊ณตํ•  ๊ฑฐ
์—†์ด ์ƒˆ๋กœ์šด ๊ฐ์ฒด์— ๋Œ€ํ•œ ๋ ˆํผ๋Ÿฐ์Šค๋งŒ
๋ฐ˜ํ™˜ํ•˜๋ฉด ๋œ๋‹ค
์ฃผ์˜ ์‚ฌํ•ญ
2. ์žฌ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ
2) ๊ฐ์ฒด๋ฅผ ํ’€ ๋ฐ–์—์„œ ์ดˆ๊ธฐํ™” ํ•œ๋‹ค๋ฉด
โ€ข ์™ธ๋ถ€ ์ฝ”๋“œ์—์„œ๋Š” ๊ฐ์ฒด ์ƒ์„ฑ์ด ์‹คํŒจํ•  ๋•Œ์˜ ์ฒ˜๋ฆฌ๋ฅผ ์ฑ™๊ฒจ์•ผ ํ•  ์ˆ˜ ์žˆ๋‹ค
โ€ข create()๊ฐ€ ์„ฑ๊ณตํ•˜๋ฉด ๊ฐ์ฒด ํฌ์ธํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ ํ’€์ด ๊ฝ‰์ฐจ ์žˆ๋‹ค๋ฉด NULL์„
๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค

More Related Content

PDF
UE4 Garbage Collection
PDF
Game programming patterns
PDF
Direct x 12 ์ดˆ๊ธฐํ™”
PPTX
๋ฆฌํ”Œ๋ ‰์…˜๊ณผ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜
PDF
ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ
PDF
Memory & object pooling
PDF
Effective c++ chapter 1,2 ์š”์•ฝ
PPTX
Effective c++ ์ •๋ฆฌ 1~2
UE4 Garbage Collection
Game programming patterns
Direct x 12 ์ดˆ๊ธฐํ™”
๋ฆฌํ”Œ๋ ‰์…˜๊ณผ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜
ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ
Memory & object pooling
Effective c++ chapter 1,2 ์š”์•ฝ
Effective c++ ์ •๋ฆฌ 1~2

What's hot (20)

PDF
Exception&log
PPTX
Effective c++chapter3
PPTX
Go lang(goroutine, channel, แ„ƒแ…ฉแ†ผแ„€แ…ตแ„’แ…ช แ„€แ…ขแ†จแ„Žแ…ฆ)
PPTX
Effective C++ Chaper 1
PPTX
Effective c++chapter1 and2
PDF
์ด์Šน์žฌ, ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋””์Šค์–ด์…ˆ๋ธ”๋ฆฌ ๋””๋ฒ„๊น…, NDC2014
PPTX
Effective c++chapter8
PPTX
Effective c++chapter4
PPT
effective c++ chapter 3~4 ์ •๋ฆฌ
PPTX
Effective c++ ์ •๋ฆฌ chapter 8
PPTX
Effective c++ ์ •๋ฆฌ chapter 4
PPTX
Effective c++ ์ฑ•ํ„ฐ 2 ์ •๋ฆฌ
PPTX
Effective C++ ์ •๋ฆฌ chapter 3
PPTX
Effective c++ ์ •๋ฆฌ chapter 6
PDF
NDC14 - ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋””์Šค์–ด์…ˆ๋ธ”๋ฆฌ ๋””๋ฒ„๊น…
PPTX
More effective c++ 2
PDF
More effective c++ แ„’แ…กแ†ผแ„†แ…ฉแ†จ30แ„‡แ…ฎแ„แ…ฅ
PDF
JVM Synchronization_Wh apm
PPTX
Effective c++ 2
PDF
Hotspot JVM GC_Wh apm
Exception&log
Effective c++chapter3
Go lang(goroutine, channel, แ„ƒแ…ฉแ†ผแ„€แ…ตแ„’แ…ช แ„€แ…ขแ†จแ„Žแ…ฆ)
Effective C++ Chaper 1
Effective c++chapter1 and2
์ด์Šน์žฌ, ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋””์Šค์–ด์…ˆ๋ธ”๋ฆฌ ๋””๋ฒ„๊น…, NDC2014
Effective c++chapter8
Effective c++chapter4
effective c++ chapter 3~4 ์ •๋ฆฌ
Effective c++ ์ •๋ฆฌ chapter 8
Effective c++ ์ •๋ฆฌ chapter 4
Effective c++ ์ฑ•ํ„ฐ 2 ์ •๋ฆฌ
Effective C++ ์ •๋ฆฌ chapter 3
Effective c++ ์ •๋ฆฌ chapter 6
NDC14 - ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋””์Šค์–ด์…ˆ๋ธ”๋ฆฌ ๋””๋ฒ„๊น…
More effective c++ 2
More effective c++ แ„’แ…กแ†ผแ„†แ…ฉแ†จ30แ„‡แ…ฎแ„แ…ฅ
JVM Synchronization_Wh apm
Effective c++ 2
Hotspot JVM GC_Wh apm
Ad

Similar to Game programming patterns 2 (20)

PPTX
์–ธ๋ฆฌ์–ผ์„ ํ™œ์šฉํ•œ ์˜ค๋ธŒ์ ํŠธ ํ’€๋ง
ย 
PPTX
๋””์ž์ธํŒจํ„ด 1~13
PPTX
Head first๋””์ž์ธํŒจํ„ด 1~13_ํฌ๋ฏผ_ํ˜ธ์ค€
PDF
๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจํ„ด 4์žฅ
PPTX
Effective c++ 1~8์žฅ
PDF
MEC++ 5
PPTX
Effective c++ 1,2
PDF
More effective c++ chapter4 แ„‹แ…ตแ„’แ…ฎ แ„’แ…กแ†ผแ„†แ…ฉแ†จ 29แ„แ…กแ„Œแ…ต
PPTX
OpenCV's Built-in Trackers
PPTX
[Gpg2๊ถŒ ๋ฐ•๋ฏผ๊ทผ] 3.3 ๋งˆ์ดํฌ๋กœ ์Šค๋ ˆ๋“œ๋ฅผ ํ†ตํ•œ ai ๊ด€๋ฆฌ
PPTX
Windows via c/c++ ์Šคํ„ฐ๋””9์žฅ
ย 
PPTX
๋ชจ์–ด ์ดํŽ™ํ‹ฐ๋ธŒ c++ 5์žฅ ์Šคํ„ฐ๋””
ย 
PDF
Effective java
PPTX
[Unite2015 ๋ฐ•๋ฏผ๊ทผ] ์œ ๋‹ˆํ‹ฐ ์ตœ์ ํ™” ํ…Œํฌ๋‹‰ ์ด์ •๋ฆฌ
PPTX
More effective c++ แ„Žแ…ขแ†ธแ„แ…ฅ3~4ppt
PPTX
๋„๋ฉ”์ธ ๊ฐ์ฒด์˜ ์ƒ๋ช…์ฃผ๊ธฐ
PPTX
[Dev rookie]designpattern
PPTX
Mec++ chapter3,4
PDF
[2023] Cut and Learn for Unsupervised Object Detection and Instance Segmentation
PPTX
More effective c++ 3
์–ธ๋ฆฌ์–ผ์„ ํ™œ์šฉํ•œ ์˜ค๋ธŒ์ ํŠธ ํ’€๋ง
ย 
๋””์ž์ธํŒจํ„ด 1~13
Head first๋””์ž์ธํŒจํ„ด 1~13_ํฌ๋ฏผ_ํ˜ธ์ค€
๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจํ„ด 4์žฅ
Effective c++ 1~8์žฅ
MEC++ 5
Effective c++ 1,2
More effective c++ chapter4 แ„‹แ…ตแ„’แ…ฎ แ„’แ…กแ†ผแ„†แ…ฉแ†จ 29แ„แ…กแ„Œแ…ต
OpenCV's Built-in Trackers
[Gpg2๊ถŒ ๋ฐ•๋ฏผ๊ทผ] 3.3 ๋งˆ์ดํฌ๋กœ ์Šค๋ ˆ๋“œ๋ฅผ ํ†ตํ•œ ai ๊ด€๋ฆฌ
Windows via c/c++ ์Šคํ„ฐ๋””9์žฅ
ย 
๋ชจ์–ด ์ดํŽ™ํ‹ฐ๋ธŒ c++ 5์žฅ ์Šคํ„ฐ๋””
ย 
Effective java
[Unite2015 ๋ฐ•๋ฏผ๊ทผ] ์œ ๋‹ˆํ‹ฐ ์ตœ์ ํ™” ํ…Œํฌ๋‹‰ ์ด์ •๋ฆฌ
More effective c++ แ„Žแ…ขแ†ธแ„แ…ฅ3~4ppt
๋„๋ฉ”์ธ ๊ฐ์ฒด์˜ ์ƒ๋ช…์ฃผ๊ธฐ
[Dev rookie]designpattern
Mec++ chapter3,4
[2023] Cut and Learn for Unsupervised Object Detection and Instance Segmentation
More effective c++ 3
Ad

More from QooJuice (13)

PDF
์บ๋ฆญํ„ฐ ์• ๋‹ˆ๋ฉ”์ด์…˜
PDF
Screen space ambient occlusion
PDF
Compute shader
PDF
Picking
PDF
์ฝ”๋ฃจํ‹ด(Coroutine)
PDF
ํ…Œ๋ผ๋กœ ์‚ดํŽด๋ณธ MMORPG์˜ ๋…ผํƒ€๊ฒŸํŒ… ์‹œ์Šคํ…œ
PDF
ํ–‰๋ ฌ
PDF
๋ฒกํ„ฐ
PDF
๋…ธ๋ง ๋งตํ•‘(Normal mapping)
PDF
๋ถ€ํŒ…
PDF
์ ˆ์ฐจ์ง€ํ–ฅ vs ๊ฐ์ฒด์ง€ํ–ฅ
PDF
Segmentation and Paging
PDF
Move semantics
์บ๋ฆญํ„ฐ ์• ๋‹ˆ๋ฉ”์ด์…˜
Screen space ambient occlusion
Compute shader
Picking
์ฝ”๋ฃจํ‹ด(Coroutine)
ํ…Œ๋ผ๋กœ ์‚ดํŽด๋ณธ MMORPG์˜ ๋…ผํƒ€๊ฒŸํŒ… ์‹œ์Šคํ…œ
ํ–‰๋ ฌ
๋ฒกํ„ฐ
๋…ธ๋ง ๋งตํ•‘(Normal mapping)
๋ถ€ํŒ…
์ ˆ์ฐจ์ง€ํ–ฅ vs ๊ฐ์ฒด์ง€ํ–ฅ
Segmentation and Paging
Move semantics

Game programming patterns 2

  • 1. ๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจํ„ด 2 ์ฟ ์žฌ์•„์ด ๊น€์žฌ๊ฒฝ
  • 2. ๋ชฉ์ฐจ 1. ๋ช…๋ น (Command) 2. ๊ด€์ฐฐ์ž (Observer) 3. ๊ฐ์ฒด ํ’€ (Object Pool)
  • 4. ์ž…๋ ฅํ‚ค ๋ณ€๊ฒฝ โ€ข ๊ทธ๋ฆผ์„ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•ด ๋ณด์ž
  • 6. ์ž…๋ ฅํ‚ค ๋ณ€๊ฒฝ โ€ข ๋งŒ์•ฝ ๊ฒŒ์ž„ ๋„์ค‘ ํ‚ค๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค๋ฉด? โ€ข ์ ํ”„๋ฅผ X -> Y๋กœ ๋ฐ”๊พผ๋‹ค๋˜์ง€โ€ฆ
  • 7. ์˜ˆ์ œ ์ฝ”๋“œ โ€ข ๊ณตํ†ต ์ƒ์œ„ ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•œ๋‹ค
  • 8. ์˜ˆ์ œ ์ฝ”๋“œ โ€ข ๊ฐ ํ–‰๋™๋ณ„๋กœ ํ•˜์œ„ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ ๋‹ค
  • 9. ์˜ˆ์ œ ์ฝ”๋“œ โ€ข ์ž…๋ ฅ ํ•ธ๋“ค๋Ÿฌ์—๋Š” ๊ฐ ๋ฒ„ํŠผ๋ณ„๋กœ Command ํด๋ž˜์Šค ํฌ์ธํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค
  • 11. ๊ฒฐ๊ณผ โ€ข ํ•œ ๊ฒน ์šฐํšŒํ•˜๋Š” ๊ณ„์ธต์ด ์ƒ๊ฒผ๋‹ค
  • 12. ์ข€ ๋” ์œ ์—ฐํ•˜๊ฒŒ โ€ข ํ˜„์žฌ JumpCommand ํด๋ž˜์Šค๋Š” ์˜ค์ง ํ”Œ๋ ˆ์ด์–ด ์บ๋ฆญํ„ฐ๋งŒ ์ ํ”„ํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค โ€ข ์ด๋Ÿฐ ์ œ์•ฝ์„ ์œ ์—ฐํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ œ์–ดํ•˜๋ ค๋Š” ๊ฐ์ฒด๋ฅผ ํ•จ์ˆ˜์—์„œ ์ง์ ‘ ์ฐพ๊ฒŒ ํ•˜์ง€ ๋ง๊ณ  ๋ฐ–์—์„œ ์ „๋‹ฌํ•ด์ฃผ์ž
  • 15. ๊ฒฐ๊ณผ โ€ข ๋ช…๋ น์„ ์‹คํ–‰ํ•  ๋•Œ ์•กํ„ฐ๋งŒ ๋ฐ”๊พธ๋ฉด ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ๊ฒŒ์ž„์— ์žˆ๋Š” ์–ด๋–ค ์•กํ„ฐ๋ผ๋„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค โ€ข ํ•จ์ˆ˜๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•˜๋Š” ํ˜•ํƒœ์˜ ๊ฐ•ํ•œ ์ปคํ”Œ๋ง์„ ์ œ๊ฑฐํ•˜์—ฌ ๋ช…๋ น์„ ํ๋‚˜ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค
  • 16. ์‹คํ–‰ ์ทจ์†Œ์™€ ์žฌ์‹คํ–‰ โ€ข ๊ฒŒ์ž„์—์„œ ์ด๋™ ์ทจ์†Œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž
  • 22. ์—…์  ๋‹ฌ์„ฑ์„ ๊ตฌํ˜„ํ•ด ๋ณด์ž โ€ข โ€˜๋ชฌ์Šคํ„ฐ 100๋งˆ๋ฆฌ ์ฃฝ์ด๊ธฐโ€™ ๊ฐ™์€ ์—…์  ์‹œ์Šคํ…œ์„ ์ถ”๊ฐ€ํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฐ ์—…์ ์ด ์ˆ˜๋ฐฑ ๊ฐœ๊ฐ€ ๋„˜๋Š”๋‹ค๊ณ  ํ•˜์ž โ€ข ์—…์  ์ข…๋ฅ˜๊ฐ€ ๊ด‘๋ฒ”์œ„ํ•˜๊ณ  ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•๋„ ๋‹ค์–‘ํ•˜๋‹ค ๋ณด๋‹ˆ ๊น”๋”ํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค โ€ข ์ถฉ๋Œ ๊ฒ€์‚ฌ ๊ณ„์‚ฐ ์ฝ”๋“œ ํ•œ๊ฐ€์šด๋ฐ์—์„œ โ€˜๋‹ค๋ฆฌ์—์„œ ๋–จ์–ด์ง€๊ธฐ ์—…์  ํ•ด์ œโ€™ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์‹ถ์ง„ ์•Š์„ ๊ฒƒ์ด๋‹ค
  • 23. ์—…์  ๋‹ฌ์„ฑ์„ ๊ตฌํ˜„ํ•ด ๋ณด์ž โ€ข ํŠน์ • ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•˜๋Š” ์ฝ”๋“œ๋Š” ํ•ญ์ƒ ํ•œ๋ฐ ๋ชจ์•„๋‘๋Š” ๊ฒŒ ์ข‹๋‹ค โ€ข ๋ฌธ์ œ๋Š” ์—…์ ์„ ์—ฌ๋Ÿฌ ๊ฒŒ์ž„ ํ”Œ๋ ˆ์ด ์š”์†Œ์—์„œ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค โ€ข ์ด๋Ÿฐ ์ฝ”๋“œ ์ „๋ถ€์™€ ์ปคํ”Œ๋ง๋˜์ง€ ์•Š๊ณ ๋„ ์—…์  ์ฝ”๋“œ๊ฐ€ ๋™์ž‘ํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด?
  • 24. ์—…์  ๋‹ฌ์„ฑ์„ ๊ตฌํ˜„ํ•ด ๋ณด์ž โ€ข ๋ฌผ์ฒด๊ฐ€ ํ‘œ๋ฉด์— ๋†“์—ฌ ์žˆ๋Š”์ง€, ๋ฐ”๋‹ฅ์œผ๋กœ ์ถ”๋ฝํ•˜๋Š”์ง€๋ฅผ ์ถ”์ ํ•˜๋Š” ๋ฌผ๋ฆฌ ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด๋ณด์ž โ€ข โ€˜๋‹ค๋ฆฌ์—์„œ ๋–จ์–ด์ง€๊ธฐโ€™ ์—…์ ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์—…์  ์ฝ”๋“œ๋ฅผ ๋ฌผ๋ฆฌ ์ฝ”๋“œ์— ๋„ฃ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋Ÿฌ๋ฉด ์ฝ”๋“œ๊ฐ€ ์ง€์ €๋ถ„ํ•ด์ง„๋‹ค โ€ข ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด๋ณด์ž
  • 25. ์—…์  ๋‹ฌ์„ฑ์„ ๊ตฌํ˜„ํ•ด ๋ณด์ž ์ด ์ฝ”๋“œ๋Š” โ€˜์ด๊ฒŒ ๋ฐฉ๊ธˆ ๋–จ์–ด์ง€๊ธฐ ์‹œ์ž‘ํ–ˆ์œผ๋‹ˆ ๋ˆ„๊ตฐ์ง€๋Š” ๋ชฐ๋ผ๋„ ์•Œ์•„์„œ ํ•˜์‹œ์˜คโ€™๋ผ๊ณ  ์•Œ๋ ค์ฃผ๋Š” ๊ฒŒ ์ „๋ถ€๋‹ค
  • 26. ์—…์  ๋‹ฌ์„ฑ์„ ๊ตฌํ˜„ํ•ด ๋ณด์ž โ€ข ์—…์  ์‹œ์Šคํ…œ์€ ๋ฌผ๋ฆฌ ์—”์ง„์ด ์•Œ๋ฆผ์„ ๋ณด๋‚ผ ๋•Œ๋งˆ๋‹ค ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ์Šค์Šค๋กœ๋ฅผ ๋“ฑ๋กํ•œ๋‹ค โ€ข ์—…์  ์‹œ์Šคํ…œ์€ ๋–จ์–ด์ง€๋Š” ๋ฌผ์ฒด๊ฐ€ ์บ๋ฆญํ„ฐ๊ฐ€ ๋งž๋Š”์ง€, ๋–จ์–ด์ง€๊ธฐ ์ „์— ๋‹ค๋ฆฌ ์œ„์— ์žˆ์—ˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•œ ๋’ค์— ์—…์  ์ž ๊ธˆ์„ ํ•ด์ œํ•œ๋‹ค โ€ข ์ด๋Ÿฐ ๊ณผ์ •์„ ๋ฌผ๋ฆฌ ์ฝ”๋“œ๋Š” ์ „ํ˜€ ๋ชฐ๋ผ๋„ ๋œ๋‹ค
  • 27. ์—…์  ๋‹ฌ์„ฑ์„ ๊ตฌํ˜„ํ•ด ๋ณด์ž โ€ข ๋ฌผ๋ฆฌ ์—”์ง„ ์ฝ”๋“œ๋Š” ์ „ํ˜€ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์€ ์ฑ„๋กœ ์—…์  ๋ชฉ๋ก์„ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ์•„์˜ˆ ์—…์  ์‹œ์Šคํ…œ์„ ๋–ผ์–ด๋‚ผ ์ˆ˜๋„ ์žˆ๋‹ค โ€ข ๋ฌผ๋ฆฌ ์—”์ง„ ์ฝ”๋“œ๋Š” ๋ˆ„๊ฐ€ ๋ฐ›๋“  ๋ง๋“  ๊ณ„์† ์•Œ๋ฆผ์„ ๋ณด๋‚ธ๋‹ค
  • 29. ๊ด€์ฐฐ์ž โ€ข ์–ด๋–ค ํด๋ž˜์Šค๋“  Observer ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๊ด€์ฐฐ์ž๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค
  • 30. ๋Œ€์ƒ โ€ข Notify ํ•จ์ˆ˜๋Š” ๊ด€์ฐฐ๋‹นํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ํ˜ธ์ถœํ•œ๋‹ค. โ€ข ์ด๋Ÿฐ ๊ฐ์ฒด๋ฅผ ๋Œ€์ƒ(Subject) ์ด๋ผ ๋ถ€๋ฅธ๋‹ค
  • 31. ๊ฒฐ๊ณผ โ€ข Subject๋Š” Observer์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜์ง€๋งŒ ์„œ๋กœ ์ปคํ”Œ๋ง๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค โ€ข ๋ฌผ๋ฆฌ ์ฝ”๋“œ ์–ด๋””์—๋„ ์—…์ ๊ณผ ๊ด€๋ จ๋œ ๋ถ€๋ถ„์€ ์—†์ง€๋งŒ ์—…์  ์‹œ์Šคํ…œ์œผ๋กœ ์•Œ๋ฆผ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค โ€ข Observer๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋ฉด Observer๋“ค์ด ๊ฐ๊ฐ ๋…๋ฆฝ์ ์œผ๋กœ ๋‹ค๋ค„์ง€๋Š” ๊ฑธ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค
  • 32. ๋‚จ์€ ์ž‘์—… โ€ข ๋ฌผ๋ฆฌ ์—”์ง„์ด ์•Œ๋ฆผ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์ž โ€ข ์‹ค์ œ ์ฝ”๋“œ์˜€๋‹ค๋ฉด ์ƒ์† ๋Œ€์‹  Subject ์ธ์Šคํ„ด์Šค๋ฅผ ํฌํ•จํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ์„ ๊ฒƒ์ด๋‹ค
  • 33. ์ฃผ์˜ํ•  ์  1 โ€ข ํŒจํ„ด์ด ๋™๊ธฐ์ ์ด๋‹ค. ๋ชจ๋“  Observer๊ฐ€ Notify ํ•จ์ˆ˜๋ฅผ ๋๋‚ด๊ธฐ ์ „์—๋Š” ๋‹ค์Œ ์ž‘์—…์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์—†๋‹ค โ€ข Observer ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋А๋ฆฌ๋ฉด ๋Œ€์ƒ์ด ๋ธ”๋ก๋  ์ˆ˜ ์žˆ๋‹ค โ€ข ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์กฐ์‹ฌํ•ด์•ผ ํ•œ๋‹ค. ์–ด๋–ค Observer๊ฐ€ Subject์˜ ๋ฝ์„ ๋ฌผ๊ณ  ์žˆ๋‹ค๋ฉด ๊ฒŒ์ž„ ์ „์ฒด๊ฐ€ ๊ต์ฐฉ์ƒํƒœ์— ๋น ์งˆ ์ˆ˜ ์žˆ๋‹ค
  • 34. ์ฃผ์˜ํ•  ์  2 โ€ข Observer๋ฅผ ๋ถ€์ฃผ์˜ํ•˜๊ฒŒ ์‚ญ์ œํ•˜๋‹ค ๋ณด๋ฉด Dangling Pointer๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค โ€ข Subject๋ฅผ ์‚ญ์ œํ•œ ํ›„ ๋” ์ด์ƒ ์•Œ๋ฆผ์„ ๋ฐ›์„ ์ˆ˜ ์—†๋Š”๋ฐ๋„ Observer๊ฐ€ ์•Œ๋ฆผ์„ ๊ธฐ๋‹ค๋ฆด ์ˆ˜๋„ ์žˆ๋‹ค โ€ข Observer๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด Subject์— ์žˆ๋Š” Observer๋“ค๋„ ์ œ๊ฑฐ๋ผ์•ผ ํ•œ๋‹ค
  • 35. GC๊ฐ€ ์žˆ๋Š”๋ฐ์š”? โ€ข GC๊ฐ€ ์žˆ๋Š” ์–ธ์–ด๋Š” ๋ช…์‹œ์ ์œผ๋กœ ์‚ญ์ œํ•˜์ง€ ์•Š์•„๋„ ๋ ๊นŒ? โ€ข ์บ๋ฆญํ„ฐ ์ฒด๋ ฅ ๊ฐ™์€ ์ƒํƒœ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” UI ํ™”๋ฉด์„ ์ƒ๊ฐํ•ด๋ณด์ž 1. ์œ ์ €๊ฐ€ ์ƒํƒœ์ฐฝ์„ ์—ด๋ฉด ์ƒํƒœ์ฐฝ UI ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค 2. ์ƒํƒœ์ฐฝ์„ ๋‹ซ์œผ๋ฉด UI ๊ฐ์ฒด๋ฅผ ๋”ฐ๋กœ ์‚ญ์ œํ•˜์ง€ ์•Š๊ณ  GC๊ฐ€ ์•Œ์•„์„œ ์ •๋ฆฌํ•˜๊ฒŒ ํ•œ๋‹ค
  • 36. GC๊ฐ€ ์žˆ๋Š”๋ฐ์š”? โ€ข ์บ๋ฆญํ„ฐ๊ฐ€ ์–ด๋–ค ํ–‰์œ„๋กœ UI ์ฐฝ์— ์•Œ๋ฆผ์„ ๋ณด๋‚ด UI๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค โ€ข ์œ ์ €๊ฐ€ ์ƒํƒœ์ฐฝ์„ ๋‹ซ์œผ๋ฉด? 1. UI๋Š” ๋ณด์ด์ง€ ์•Š์ง€๋งŒ ์บ๋ฆญํ„ฐ๋Š” ์—ฌ์ „ํžˆ ์ƒํƒœ์ฐฝ UI๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋‹ค ๋”ฐ๋ผ์„œ GC๊ฐ€ ์ˆ˜๊ฑฐํ•ด ๊ฐ€์ง€ ์•Š๊ณ  ์•Œ๋ฆผ์ด ๊ณ„์† ๋ณด๋‚ด์ง„๋‹ค 2. ์ƒํƒœ์ฐฝ์„ ์—ด ๋•Œ๋งˆ๋‹ค ์ƒํƒœ์ฐฝ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด Observer ๋ชฉ๋ก์ด ์ ์  ์ปค์ง„๋‹ค โ€ข ์ด๋ฅผ ์‚ฌ๋ผ์ง„ ๋ฆฌ์Šค๋„ˆ ๋ฌธ์ œ(Lapsed listener Problem)์ด๋ผ ํ•œ๋‹ค
  • 37. ์ฃผ์˜ํ•  ์  3 โ€ข ๋ฒ„๊ทธ๊ฐ€ ์—ฌ๋Ÿฌ Observer์— ํผ์ ธ ์žˆ๋‹ค๋ฉด ์ƒํ˜ธ ์ž‘์šฉ ํ๋ฆ„์„ ์ถ”๋ก ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค โ€ข ์‹ค์ œ๋กœ ์–ด๋–ค Observer๊ฐ€ ์•Œ๋ฆผ์„ ๋ฐ›๋Š”์ง€๋Š” ๋Ÿฐํƒ€์ž„์—์„œ ํ™•์ธํ•  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค โ€ข ์ฆ‰, ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ฝ”๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š”์ง€๋ฅผ ์ •์ ์œผ๋กœ๋Š” ์•Œ ์ˆ˜ ์—†๊ณ  ๋™์ ์œผ๋กœ ์ถ”๋ก ํ•ด์•ผ ํ•œ๋‹ค
  • 38. ๋ฏธ๋ž˜์˜ ๊ด€์ฐฐ์ž โ€ข Dataflow Programming ex) ์–ธ๋ฆฌ์–ผ์˜ ๋ธ”๋ฃจํ”„๋ฆฐํŠธ, ์œ ๋‹ˆํ‹ฐ์˜ ๋ฉ”์นด๋‹˜ โ€ข Functional Reactive Programming โ€ข Data Binding
  • 40. ์˜๋„ โ€ข ๊ฐ์ฒด๋ฅผ ๋งค๋ฒˆ ํ• ๋‹น, ํ•ด์ œํ•˜์ง€ ์•Š๊ณ  ๊ณ ์ • ํฌ๊ธฐ ํ’€์— ๋“ค์–ด ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์žฌ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•œ๋‹ค
  • 41. ๋™๊ธฐ โ€ข ํŒŒํ‹ฐํด ์‹œ์Šคํ…œ์„ ์˜ˆ๋กœ ๋“ค์ž โ€ข ํ•œ ๋ฒˆ์— ์ˆ˜๋ฐฑ ๊ฐœ์˜ ํŒŒํ‹ฐํด์ด ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํŒŒํ‹ฐํด์„ ๊ต‰์žฅํžˆ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค โ€ข ๋” ์ค‘์š”ํ•œ ๊ฒƒ์€ ํŒŒํ‹ฐํด์„ ์ƒ์„ฑ, ์ œ๊ฑฐํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๋‹จํŽธํ™”๊ฐ€ ์ƒ๊ฒจ์„œ๋Š” ์•ˆ ๋œ๋‹ค
  • 42. ํŒจํ„ด โ€ข ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋“ค์„ ๋ชจ์•„๋†“์€ Object Pool ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•œ๋‹ค โ€ข ์—ฌ๊ธฐ์— ๋“ค์–ด๊ฐ€๋Š” ๊ฐ์ฒด๋Š” ํ˜„์žฌ ์ž์‹ ์ด โ€˜์‚ฌ์šฉ ์ค‘โ€™์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ด์•ผ ํ•œ๋‹ค โ€ข ํ’€์€ ์ดˆ๊ธฐํ™”๋  ๋•Œ ์‚ฌ์šฉํ•  ๊ฐ์ฒด๋“ค์„ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•˜๊ณ  ์ด๋“ค ๊ฐ์ฒด๋ฅผ โ€˜์‚ฌ์šฉ ์•ˆ ํ•จโ€™ ์ƒํƒœ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค
  • 43. ํŒจํ„ด โ€ข ์ƒˆ๋กœ์šด ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•˜๋ฉด ํ’€์— ์š”์ฒญํ•œ๋‹ค โ€ข ํ’€์€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋ฅผ ์ฐพ์•„ โ€˜์‚ฌ์šฉ ์ค‘โ€™์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ ๋’ค ๋ฐ˜ํ™˜ํ•œ๋‹ค โ€ข ๊ฐ์ฒด๋ฅผ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด โ€˜์‚ฌ์šฉ ์•ˆ ํ•จโ€™ ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆฐ๋‹ค
  • 44. ์–ธ์ œ ์“ธ ๊ฒƒ์ธ๊ฐ€? โ€ข ๊ฐ์ฒด๋ฅผ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์ƒ์„ฑ/์‚ญ์ œํ•ด์•ผ ํ•œ๋‹ค โ€ข ๊ฐ์ฒด๋“ค์˜ ํฌ๊ธฐ๊ฐ€ ๋น„์Šทํ•˜๋‹ค โ€ข ๊ฐ์ฒด๋ฅผ ํž™์— ์ƒ์„ฑํ•˜๊ธฐ๊ฐ€ ๋А๋ฆฌ๊ฑฐ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ๋‹จํŽธํ™”๊ฐ€ ์šฐ๋ ค๋œ๋‹ค โ€ข ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ์ด๋‚˜ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ๊ฐ™์ด ์ ‘๊ทผ ๋น„์šฉ์ด ๋น„์‹ธ๋ฉด์„œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ž์›์„ ๊ฐ์ฒด๊ฐ€ ์บก์Аํ™”ํ•˜๊ณ  ์žˆ๋‹ค
  • 45. ์ฃผ์˜ ์‚ฌํ•ญ โ€ข Object Pool์„ ์“ฐ๊ฒ ๋‹ค๋Š” ๊ฒƒ์€ โ€˜๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ์ง€๋ฅผ ๋‚ด๊ฐ€ ๋” ์ž˜ ์•ˆ๋‹คโ€™๋ผ๊ณ  ์„ ์–ธํ•˜๋Š” ์…ˆ์ด๋‹ค โ€ข ์ฆ‰, Object Pool์˜ ํ•œ๊ณ„๋„ ์ง์ ‘ ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค
  • 46. ์ฃผ์˜ ์‚ฌํ•ญ 1. ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„์™€ ๋‹ค๋ฅผ ๋ฐ” ์—†๋‹ค โ€ข ํ•„์š”์— ๋”ฐ๋ผ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•ด์•ผ ํ•œ๋‹ค โ€ข ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์ž‘์œผ๋ฉด (ํฌ๋ž˜์‹œ๊ฐ€ ๋‚  ํ…Œ๋‹ˆ) ๋ฐ”๋กœ ์•Œ ์ˆ˜ ์žˆ๋‹ค โ€ข ํ•˜์ง€๋งŒ ๋„ˆ๋ฌด ์ปค์ง€์ง€๋„ ์•Š๋„๋ก ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค
  • 47. ์ฃผ์˜ ์‚ฌํ•ญ 2. ํ•œ ๋ฒˆ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด ๊ฐœ์ˆ˜๊ฐ€ ์ •ํ•ด์ ธ ์žˆ๋‹ค โ€ข Object Pool์˜ ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ์‚ฌ์šฉ ์ค‘์ด์–ด์„œ ์žฌ์‚ฌ์šฉํ•  ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜๋ฐ›์ง€ ๋ชปํ•  ๋•Œ๋ฅผ ๋Œ€๋น„ํ•ด์•ผ ํ•œ๋‹ค โ€ข ๋ช‡ ๊ฐ€์ง€ ๋Œ€๋น„์ฑ…์ด ์žˆ๋‹ค
  • 48. ์ฃผ์˜ ์‚ฌํ•ญ 2. ํ•œ ๋ฒˆ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด ๊ฐœ์ˆ˜๊ฐ€ ์ •ํ•ด์ ธ ์žˆ๋‹ค 1) ์ด๋Ÿฐ ์ผ์ด ์•„์˜ˆ ์ƒ๊ธฐ์ง€ ์•Š๊ฒŒ ํ•œ๋‹ค โ€ข ๊ฐ€์žฅ ํ”ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ป๊ฒŒ ํ•˜๋”๋ผ๋„ ํ’€์ด ์ ˆ๋Œ€ ๋ถ€์กฑํ•˜์ง€ ์•Š๋„๋ก ํ’€์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•œ๋‹ค โ€ข ์ ์ด๋‚˜ ์•„์ดํ…œ๊ฐ™์ด ์ค‘์š”ํ•œ Object Pool์—์„œ๋Š” ์ด๊ฒŒ ๋‹ต์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค โ€ข ๋ช‡ ๋ฒˆ ์—†์„ ์ตœ์•…์˜ ์ƒํ™ฉ์— ๋งž์ถฐ์„œ ํ’€์˜ ํฌ๊ธฐ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒŒ ๋‹จ์ ์ด๋‹ค
  • 49. ์ฃผ์˜ ์‚ฌํ•ญ 2. ํ•œ ๋ฒˆ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด ๊ฐœ์ˆ˜๊ฐ€ ์ •ํ•ด์ ธ ์žˆ๋‹ค 2) ๊ทธ๋ƒฅ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค โ€ข ํŒŒํ‹ฐํด ์‹œ์Šคํ…œ ๊ฐ™์€ ๊ณณ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค โ€ข ๋ชจ๋“  ํŒŒํ‹ฐํด์ด ์‚ฌ์šฉ ์ค‘์ด๋ผ๋ฉด ์ด๋ฏธ ๋ฒˆ์ฉ๊ฑฐ๋ฆฌ๋Š” ๊ทธ๋ž˜ํ”ฝ์ด ํ™”๋ฉด์„ ๋’ค๋ฎ๊ณ  ์žˆ๋‹ค๋Š” ์–˜๊ธฐ๋‹ค. ์ด๋Ÿด ๋•Œ ์ƒˆ๋กœ์šด ํญ๋ฐœ ์ดํŽ™ํŠธ๋Š” ์ด์ „ ๊ฒƒ๋ณด๋‹ค ํ™”๋ คํ•˜๊ฒŒ ํ„ฐ์ง€์ง€ ์•Š๋Š” ์ด์ƒ ๊ทธ๋‹ค์ง€ ๋ˆˆ์— ๋„์ง€ ์•Š๋Š”๋‹ค
  • 50. ์ฃผ์˜ ์‚ฌํ•ญ 2. ํ•œ ๋ฒˆ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด ๊ฐœ์ˆ˜๊ฐ€ ์ •ํ•ด์ ธ ์žˆ๋‹ค 3) ๊ธฐ์กด ๊ฐ์ฒด๋ฅผ ๊ฐ•์ œ๋กœ ์ œ๊ฑฐํ•œ๋‹ค โ€ข ํ’€์ด ๊ฝ‰์ฐฌ ์ƒํƒœ์—์„œ ์ƒˆ๋กœ์šด ์‚ฌ์šด๋“œ๋ฅผ ํ‹€์–ด์•ผ ํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž โ€ข ๋งŒ์•ฝ ์ƒˆ๋กœ์šด ์‚ฌ์šด๋“œ ์ƒ์„ฑ์„ ๋ฌด์‹œํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด ์žฌ์ƒ ์ค‘์ธ ์‚ฌ์šด๋“œ ์ค‘์—์„œ ๊ฐ€์žฅ ์†Œ๋ฆฌ๊ฐ€ ์ž‘์€ ๊ฒƒ์„ ์ƒˆ๋กœ์šด ์‚ฌ์šด๋“œ๋กœ ๊ต์ฒดํ•˜๋Š” ๊ฒŒ ๋‚ซ๋‹ค
  • 51. ์ฃผ์˜ ์‚ฌํ•ญ 2. ํ•œ ๋ฒˆ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด ๊ฐœ์ˆ˜๊ฐ€ ์ •ํ•ด์ ธ ์žˆ๋‹ค 4) ํ’€์˜ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฐ๋‹ค โ€ข ์ถ”๊ฐ€๋กœ ๋Š˜๋ฆฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋” ์ด์ƒ ์“ฐ์ง€ ์•Š์„ ๋•Œ๋Š” ํ’€์˜ ํฌ๊ธฐ๋ฅผ ์›๋ž˜๋Œ€๋กœ ์ค„์ผ ๊ฒƒ์ธ์ง€ ๊ทธ๋Œ€๋กœ ๋‘˜์ง€๋ฅผ ์ •ํ•ด์•ผ ํ•œ๋‹ค
  • 52. ์ฃผ์˜ ์‚ฌํ•ญ 3. ๊ฐ์ฒด๋ฅผ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋Š” ๊ณ ์ •๋˜์–ด ์žˆ๋‹ค โ€ข ํ’€์— ๋“ค์–ด๊ฐ€๋Š” ๊ฐ์ฒด๊ฐ€ ์ „๋ถ€ ๊ฐ™์€ ์ž๋ฃŒํ˜•์ด๋ผ๋ฉด ์ƒ๊ด€์—†๋‹ค โ€ข ๋‹ค๋ฅธ ์ž๋ฃŒํ˜•์ธ ๊ฐ์ฒด๋‚˜ ํ•„๋“œ๊ฐ€ ์ถ”๊ธฐ๋œ ํ•˜์œ„ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ™์€ ํ’€์— ๋„ฃ๊ณ  ์‹ถ๋‹ค๋ฉด ํ’€์˜ ๋ฐฐ์—ด ํ•œ ์นธ ํฌ๊ธฐ๋ฅผ ํฌ๊ธฐ๊ฐ€ ๊ฐ€์žฅ ํฐ ์ž๋ฃŒํ˜•์— ๋งž์ถฐ์•ผ ํ•œ๋‹ค โ€ข ์ƒํ™ฉ์— ๋”ฐ๋ผ์„œ๋Š” ๊ฐ์ฒด ํฌ๊ธฐ๋ณ„๋กœ ํ’€์„ ๋‚˜๋ˆ„๋Š” ๊ฒŒ ์ข‹๋‹ค
  • 53. ์ฃผ์˜ ์‚ฌํ•ญ 4. ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด๋Š” ์ €์ ˆ๋กœ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š๋Š”๋‹ค โ€ข ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋กœ ํ• ๋‹น๋ฐ›์€ ๋ฉ”๋ชจ๋ฆฌ์—๋Š” ์ด์ „ ๊ฐ์ฒด์˜ ์ƒํƒœ๊ฐ€ ๊ฑฐ์˜ ๊ทธ๋Œ€๋กœ ๋“ค์–ด ์žˆ์–ด์„œ ์ดˆ๊ธฐํ™”๋ฅผ ํ–ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ตฌ๋ณ„ํ•˜๊ธฐ๊ฐ€ ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค โ€ข ๋•Œ๋ฌธ์— ํ’€์—์„œ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ์—๋Š” ์ฃผ์˜ํ•ด์„œ ๊ฐ์ฒด๋ฅผ ์™„์ „ํžˆ ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•œ๋‹ค โ€ข ๊ฐ์ฒด๋ฅผ ํšŒ์ˆ˜ํ•  ๋•Œ ๊ฐ์ฒด๊ฐ€ ๋“ค์–ด ์žˆ๋Š” ๋ฐฐ์—ด์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‹น ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋””๋ฒ„๊น… ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๋„ ๊ณ ๋ คํ•ด๋ณผ๋งŒ ํ•˜๋‹ค
  • 54. ์ฃผ์˜ ์‚ฌํ•ญ 5. ์‚ฌ์šฉ ์ค‘์ด์ง€ ์•Š์€ ๊ฐ์ฒด๋„ ๋ฉ”๋ชจ๋ฆฌ์— ๋‚จ์•„ ์žˆ๋‹ค โ€ข GC์™€ Object Pool์„ ๊ฐ™์ด ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ถฉ๋Œ์— ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค โ€ข ํ’€์—์„œ๋Š” ๊ฐ์ฒด๊ฐ€ ์‚ฌ์šฉ ์ค‘์ด ์•„๋‹ˆ์–ด๋„ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด๊ฐ€ ๊ณ„์† ๋ฉ”๋ชจ๋ฆฌ์— ๋‚จ๋Š”๋‹ค โ€ข ์ด ๋•Œ ์ด๋“ค ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋‹ค๋ฉด GC์—์„œ ๊ทธ ๊ฐ์ฒด๋ฅผ ํšŒ์ˆ˜ํ•  ์ˆ˜ ์—†๋‹ค
  • 59. ๋นˆ์นธ ๋ฆฌ์ŠคํŠธ โ€ข ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํŒŒํ‹ฐํด์„ ์ฐพ๊ธฐ ์œ„ํ•ด ์ „์ฒด ์ˆœํšŒ๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค โ€ข ๋ฐฐ์—ด์ด ๋งค์šฐ ์ปค์ง„๋‹ค๋ฉด ์ด ์ž‘์—…์ด ๋А๋ฆด ์ˆ˜ ์žˆ๋‹ค โ€ข ๊ฐœ์„ ํ•ด๋ณด์ž
  • 60. ๋นˆ์นธ ๋ฆฌ์ŠคํŠธ โ€ข ํŒŒํ‹ฐํด์ด ์‚ฌ์šฉ ์ค‘์ด๋ฉด live๋ฅผ, ๋ฏธ์‚ฌ์šฉ ์ค‘์ด๋ฉด next๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค
  • 66. ๋””์ž์ธ ๊ฒฐ์ • โ€ข ์‹ค์ œ ์ œํ’ˆ ์ฝ”๋“œ์—์„œ๋Š” ๋ณดํ†ต ์ด ์ •๋„๋กœ๋Š” ๋ถ€์กฑํ•˜๋‹ค โ€ข ๋ช‡ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ Object Pool์„ ๋” ์ผ๋ฐ˜์ ์ด๋ฉด์„œ ์•ˆ์ „ํ•˜๊ฑฐ๋‚˜ ์œ ์ง€๋ณด์ˆ˜ ํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค โ€ข ๊ฒŒ์ž„์— Object Pool์„ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ฌํ•ญ์„ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค
  • 67. ์ฃผ์˜ ์‚ฌํ•ญ 1. ํ’€์ด ๊ฐ์ฒด์™€ ์ปคํ”Œ๋ง๋˜๋Š”๊ฐ€? โ€ข ๊ฐ์ฒด๊ฐ€ ์ž์‹ ์ด ํ’€์— ๋“ค์–ด ์žˆ๋Š”์ง€๋ฅผ ์•Œ๊ฒŒ ํ•  ๊ฒƒ์ธ์ง€๋ถ€ํ„ฐ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค โ€ข ์•„๋ฌด ๊ฐ์ฒด๋‚˜ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ์ผ๋ฐ˜์ ์ธ ํ’€ ํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์ด๋Ÿฐ ์ƒํƒœ๋ฅผ ๋”ฐ๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค
  • 68. ์ฃผ์˜ ์‚ฌํ•ญ 1. ํ’€์ด ๊ฐ์ฒด์™€ ์ปคํ”Œ๋ง๋˜๋Š”๊ฐ€? 1) ๊ฐ์ฒด๊ฐ€ ํ’€๊ณผ ์ปคํ”Œ๋ง ๋œ๋‹ค๋ฉด โ€ข ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค โ€ข ํ’€์— ๋“ค์–ด๊ฐ€๋Š” ๊ฐ์ฒด์— โ€˜์‚ฌ์šฉ ์ค‘โ€™ ํ”Œ๋ž˜๊ทธ๋‚˜ ์ด๋Ÿฐ ์—ญํ• ์„ ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜ ๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค
  • 69. ์ฃผ์˜ ์‚ฌํ•ญ 1. ํ’€์ด ๊ฐ์ฒด์™€ ์ปคํ”Œ๋ง๋˜๋Š”๊ฐ€? 1) ๊ฐ์ฒด๊ฐ€ ํ’€๊ณผ ์ปคํ”Œ๋ง ๋œ๋‹ค๋ฉด โ€ข ๊ฐ์ฒด๊ฐ€ ํ’€์„ ํ†ตํ•ด์„œ๋งŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ๋‹ค
  • 70. ์ฃผ์˜ ์‚ฌํ•ญ 1. ํ’€์ด ๊ฐ์ฒด์™€ ์ปคํ”Œ๋ง๋˜๋Š”๊ฐ€? 1) ๊ฐ์ฒด๊ฐ€ ํ’€๊ณผ ์ปคํ”Œ๋ง ๋œ๋‹ค๋ฉด โ€ข โ€˜์‚ฌ์šฉ ์ค‘โ€™ ํ”Œ๋ž˜๊ทธ๊ฐ€ ๊ผญ ํ•„์š”ํ•œ ๊ฑด ์•„๋‹ ์ˆ˜๋„ ์žˆ๋‹ค โ€ข ๊ฐ์ฒด์— ์ž์‹ ์ด ์‚ฌ์šฉ ์ค‘์ธ์ง€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๊ฐ€ ์ด๋ฏธ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค
  • 71. ์ฃผ์˜ ์‚ฌํ•ญ 1. ํ’€์ด ๊ฐ์ฒด์™€ ์ปคํ”Œ๋ง๋˜๋Š”๊ฐ€? 2) ๊ฐ์ฒด๊ฐ€ ํ’€๊ณผ ์ปคํ”Œ๋ง๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด โ€ข ์–ด๋–ค ๊ฐ์ฒด๋ผ๋„ ํ’€์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค โ€ข ๊ฐ์ฒด์™€ ํ’€์„ ๋””์ปคํ”Œ๋งํ•จ์œผ๋กœ์จ ์ผ๋ฐ˜์ ์ด๋ฉด์„œ๋„ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ’€ ํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค
  • 72. ์ฃผ์˜ ์‚ฌํ•ญ 1. ํ’€์ด ๊ฐ์ฒด์™€ ์ปคํ”Œ๋ง๋˜๋Š”๊ฐ€? 2) ๊ฐ์ฒด๊ฐ€ ํ’€๊ณผ ์ปคํ”Œ๋ง๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด โ€ข โ€˜์‚ฌ์šฉ ์ค‘โ€™ ์ƒํƒœ๋ฅผ ๊ฐ์ฒด ์™ธ๋ถ€์—์„œ ๊ด€๋ฆฌํ•ด์•ผ ํ•œ๋‹ค โ€ข ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ๋น„ํŠธ ํ•„๋“œ๋ฅผ ๋”ฐ๋กœ ๋‘๋Š” ๊ฒƒ์ด๋‹ค
  • 73. ์ฃผ์˜ ์‚ฌํ•ญ 2. ์žฌ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ โ€ข ๊ธฐ์กด ๊ฐ์ฒด๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ์ƒํƒœ๋ฅผ ์ƒˆ๋กœ ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•œ๋‹ค โ€ข ์ด ๋•Œ ๊ฐ์ฒด ์ดˆ๊ธฐํ™”๋ฅผ ํด๋ž˜์Šค ์•ˆ์—์„œ ํ• ์ง€, ๋ฐ–์—์„œ ํ• ์ง€๋ฅผ ์ •ํ•ด์•ผ ํ•œ๋‹ค
  • 74. ์ฃผ์˜ ์‚ฌํ•ญ 2. ์žฌ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ 1) ๊ฐ์ฒด๋ฅผ ํ’€ ์•ˆ์—์„œ ์ดˆ๊ธฐํ™” ํ•œ๋‹ค๋ฉด โ€ข ํ’€์€ ๊ฐ์ฒด๋ฅผ ์™„์ „ํžˆ ์บก์Аํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค โ€ข ์ž˜ํ•˜๋ฉด ๊ฐ์ฒด๋ฅผ ํ’€ ๋‚ด๋ถ€์— ์™„์ „ํžˆ ์ˆจ๊ธธ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌ๋ฉด ๋ฐ–์—์„œ ๊ฐ์ฒด๋ฅผ ์•„์˜ˆ ์ฐธ์กฐํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์˜ˆ์ƒ์น˜ ๋ชปํ•˜๊ฒŒ ์žฌ์‚ฌ์šฉ๋˜๋Š” ๊ฑธ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค
  • 75. ์ฃผ์˜ ์‚ฌํ•ญ 2. ์žฌ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ 1) ๊ฐ์ฒด๋ฅผ ํ’€ ์•ˆ์—์„œ ์ดˆ๊ธฐํ™” ํ•œ๋‹ค๋ฉด โ€ข ํ’€ ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด๊ฐ€ ์ดˆ๊ธฐํ™”๋˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ฒฐํ•ฉ๋œ๋‹ค โ€ข ํ’€์— ๋“ค์–ด๊ฐ€๋Š” ๊ฐ์ฒด ์ค‘์—๋Š” ์ดˆ๊ธฐํ™” ํ•จ์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์ง€์›ํ•˜๋Š” ๊ฒŒ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค
  • 76. ์ฃผ์˜ ์‚ฌํ•ญ 2. ์žฌ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ 2) ๊ฐ์ฒด๋ฅผ ํ’€ ๋ฐ–์—์„œ ์ดˆ๊ธฐํ™” ํ•œ๋‹ค๋ฉด โ€ข ํ’€์˜ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋‹จ์ˆœํ•ด์ง„๋‹ค โ€ข ํ’€์€ ๊ฐ์ฒด ์ดˆ๊ธฐํ™” ํ•จ์ˆ˜๋ฅผ ์ „๋ถ€ ์ œ๊ณตํ•  ๊ฑฐ ์—†์ด ์ƒˆ๋กœ์šด ๊ฐ์ฒด์— ๋Œ€ํ•œ ๋ ˆํผ๋Ÿฐ์Šค๋งŒ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋œ๋‹ค
  • 77. ์ฃผ์˜ ์‚ฌํ•ญ 2. ์žฌ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ 2) ๊ฐ์ฒด๋ฅผ ํ’€ ๋ฐ–์—์„œ ์ดˆ๊ธฐํ™” ํ•œ๋‹ค๋ฉด โ€ข ์™ธ๋ถ€ ์ฝ”๋“œ์—์„œ๋Š” ๊ฐ์ฒด ์ƒ์„ฑ์ด ์‹คํŒจํ•  ๋•Œ์˜ ์ฒ˜๋ฆฌ๋ฅผ ์ฑ™๊ฒจ์•ผ ํ•  ์ˆ˜ ์žˆ๋‹ค โ€ข create()๊ฐ€ ์„ฑ๊ณตํ•˜๋ฉด ๊ฐ์ฒด ํฌ์ธํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ ํ’€์ด ๊ฝ‰์ฐจ ์žˆ๋‹ค๋ฉด NULL์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค