ํฌ์ŠคํŠธ

๐ŸŒ’ Garbage-Collection

๐Ÿ’ซ Q


  • ๊ฐ€๋น„์ง€์— ๋Œ€ํ•˜์—ฌ

  • GC์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด๋ด๋ผ
  • GC ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ํ• ์ˆ˜์žˆ๋Š”์ผ์€ ๋ฌด์—‡์ด ์žˆ์„์ง€ ์„ค๋ช…ํ•ด๋ด๋ผ
  • GC์˜ ์žฅ์ ๊ณผ ๋‹จ์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด๋ด๋ผ
  • ์„ธ๋Œ€๋ณ„ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜
  • Unity
    • Instantiate/Destroy๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์ฆ๊ฐ€
    • -> ์˜ค๋ธŒ์ ํŠธ ํ’€ ์‚ฌ์šฉ

๐Ÿ’ซ Garbage


ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ ์œผ๋กœ ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ค‘์—์„œ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€๋น„์ง€๋ผ๊ณ  ํ•œ๋‹ค.
๊ฐ€๋น„์ง€๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ์„ ์ €ํ•˜์‹œํ‚ค๊ณ  ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

๐Ÿ’ซ GC


๋™์ ์œผ๋กœ Garbage๋ฅผ ์ž๋™์œผ๋กœ ํƒ์ง€ํ•˜๊ณ  ํ•ด์ œํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฒ•.
์ด๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜์™€ ๊ฐ™์€ ๋ฌธ์ œ์ ์„ ๋ฐฉ์ง€ํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์˜ ์•ˆ์ •์„ฑ๊ณผ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.

๐Ÿซง ์„ธ๋Œ€๋ณ„ GC

์„ธ๋Œ€๊ฐ€ ๋‚ฎ์€ ๋ฉ”๋ชจ๋ฆฌ๋ถ€ํ„ฐ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ๋ฅผ ํ•ด์ค€ ๋‹ค์Œ ๋ฉ”๋ชจ๋ฆฌ ์ปดํŽ™์…˜์„ ํ•ด์ค€๋‹ค.

  • 0์„ธ๋Œ€ : GC๋ฅผ ํ•œ๋ฒˆ๋„ ๊ฒช์ง€ ์•Š์€ ๊ฐ“ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๊ฐ€ ๋Œ€์ƒ
  • 1์„ธ๋Œ€ : GC๋ฅผ 1ํšŒ ๊ฒช์€ ๊ฐ์ฒด๊ฐ€ ๋Œ€์ƒ
  • 2์„ธ๋Œ€ : GC๋ฅผ 2ํšŒ ์ด์ƒ ๊ฒช์€ ๊ฐ์ฒด๊ฐ€ ๋Œ€์ƒ(์ „์ฒด๋ฅผ ์˜๋ฏธ)
    • 2์„ธ๋Œ€ GC๋ฅผ ํ•  ์‹œ Full Garbage Collection์ด๋ผ ํ•˜๊ณ  ์ „์ฒด Heap์— ๋Œ€ํ•˜์—ฌ GCํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

๐Ÿซง ์„ธ๋Œ€๋ฅผ ๋‚˜๋ˆ„๋Š” ๊ทผ๊ฑฐ

  • ์ตœ๊ทผ์— ์ƒ์„ฑ๋œ ๊ฐ์ฒด์ผ์ˆ˜๋ก ์ƒ๋ช…์ฃผ๊ธฐ๊ฐ€ ์งง์„ ๊ฐ€๋Šฅ์„ฑ์ด๋†’๊ณ , ์˜ค๋ž˜๋œ ๊ฐ์ฒด์ผ์ˆ˜๋ก ์ƒ๋ช…์ฃผ๊ธฐ๊ฐ€ ๊ธธ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.
  • ์ตœ๊ทผ์— ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ผ๋ฆฌ๋Š” ์„œ๋กœ ์—ฐ๊ด€์„ฑ์ด ๋†’์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋น„์Šทํ•œ ์‹œ์ ์— ์ž์ฃผ ์•ก์„ธ์Šค ๋ฉ๋‹ˆ๋‹ค.
  • ์ผ๋ถ€๋ถ„ Heap์— ๋Œ€ํ•ด GC๋ฅผ ํ•˜๋Š” ๊ฒƒ์ด ์ „์ฒด GC๋ฅผ ํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค ๋น ๋ฆ…๋‹ˆ๋‹ค.

๐Ÿซง ์–ธ์–ด์—์„œ

  • ๋งค๋‹ˆ์ง€๋“œ ์–ธ์–ด (GC ์ง€์›)
    • C# : .NET ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‹คํ–‰.
  • ์–ธ๋งค๋‹ˆ์ง€๋“œ ์–ธ์–ด
    • C++ : ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ณ  ํ•ด์ œ.
์ด ๊ธฐ์‚ฌ๋Š” ์ €์ž‘๊ถŒ์ž์˜ CC BY 4.0 ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.