# Garbage Collection



# Goal


  • Garbage Collection์˜ ์—ญํ• ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Garbage Collection์˜ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ ๊ณผ์ •์„ 3๋‹จ๊ณ„๋กœ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Generational Gabage Collection์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Generational Garbage Collection ๊ณผ์ •์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Minor GC์™€ Major GC์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

# Abstract


C/C++ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜(Memory Leak)๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ์‚ฌ์šฉ์žํ•˜์ง€ ์•Š๋Š” ๊ฐ์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ํ•ด์ œ ํ•ด์ฃผ์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, JAVA์—์„œ๋Š” JVM(Java Virtual Machine)์ด ๊ตฌ์„ฑ๋œ JRE(Java Runtime Environment)๊ฐ€ ์ œ๊ณต๋˜๋ฉฐ, ๊ทธ ๊ตฌ์„ฑ ์š”์†Œ ์ค‘ ํ•˜๋‚˜์ธ Garbage Collection(์ดํ•˜ GC)์ด ์ž๋™์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋ฅผ ํŒŒ๊ดดํ•ฉ๋‹ˆ๋‹ค.

GC์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ธฐ ์ „์— 'stop-the-world'๋ผ๋Š” ์šฉ์–ด๋ฅผ ์•Œ์•„์•ผํ•ฉ๋‹ˆ๋‹ค. 'stop-the-world'๋ž€, GC๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด JVM์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์„ ๋ฉˆ์ถ”๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค GC ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ 'stop-the-world'๋Š” ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ๋Œ€๊ฐœ์˜ ๊ฒฝ์šฐ GC ํŠœ๋‹์€ ์ด 'stop-the-world' ์‹œ๊ฐ„์„ ์ค„์ด๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

GC๋ฅผ ํ•ด๋„ ๋”์ด์ƒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด ์—†๋Š”๋ฐ ๊ณ„์† ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๋ ค๊ณ  ํ•˜๋ฉด, OutOfMemoryError๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ WAS๊ฐ€ ๋‹ค์šด๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ–‰(Hang) ์ฆ‰, ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌ ๋ชปํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ทœ๋ชจ ์žˆ๋Š” JAVA ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํšจ์œจ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” GC์— ๋Œ€ํ•ด ์ž˜ ์•Œ์•„์•ผํ•œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” GC์— ๋Œ€ํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


# Garbage Collection


C/C++ ์–ธ์–ด์™€ ๋‹ฌ๋ฆฌ ์ž๋ฐ”๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ๊ฐ์ฒด๋ฅผ ํ•ด์ œํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ž๋ฐ” ์–ธ์–ด์˜ ํฐ ์žฅ์ ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋Š” ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‚ญ์ œํ•˜๋Š” ์ž‘์—…์„ GC๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ JVM์—์„œ GC๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ JVM์˜ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ด 5๊ฐ€์ง€ ์˜์—ญ(class, stack, heap, native method, PC)์œผ๋กœ ๋‚˜๋‰˜๋Š”๋ฐ, GC๋Š” ํž™ ๋ฉ”๋ชจ๋ฆฌ๋งŒ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์— GC์˜ ๋Œ€์ƒ์ด ๋ฉ๋‹ˆ๋‹ค.

  1. ๊ฐ์ฒด๊ฐ€ NULL์ธ ๊ฒฝ์šฐ (ex. String str = null)
  2. ๋ธ”๋Ÿญ ์‹คํ–‰ ์ข…๋ฃŒ ํ›„, ๋ธ”๋Ÿญ ์•ˆ์—์„œ ์ƒ์„ฑ๋œ ๊ฐ์ฒด
  3. ๋ถ€๋ชจ ๊ฐ์ฒด๊ฐ€ NULL์ธ ๊ฒฝ์šฐ, ํฌํ•จํ•˜๋Š” ์ž์‹ ๊ฐ์ฒด

GC๋Š” Weak Generational Hypothesis ์— ๊ธฐ๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค. ์šฐ์„  GC์˜ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ ๊ณผ์ •์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


# GC์˜ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ ๊ณผ์ •


  1. # Marking


    • ํ”„๋กœ์„ธ์Šค๋Š” ๋งˆํ‚น์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ GC๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์‚ฌ์šฉ๋˜๋Š”์ง€ ์•„๋‹Œ์ง€๋ฅผ ์ฐพ์•„๋ƒ…๋‹ˆ๋‹ค. ์ฐธ์กฐ๋˜๋Š” ๊ฐ์ฒด๋Š” ํŒŒ๋ž€์ƒ‰์œผ๋กœ, ์ฐธ์กฐ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋Š” ์ฃผํ™ฉ์ƒ‰์œผ๋กœ ๋ณด์—ฌ์ง‘๋‹ˆ๋‹ค. ๋ชจ๋“  ์˜ค๋ธŒ์ ํŠธ๋Š” ๋งˆํ‚น ๋‹จ๊ณ„์—์„œ ๊ฒฐ์ •์„ ์œ„ํ•ด ์Šค์บ”๋˜์–ด์ง‘๋‹ˆ๋‹ค. ๋ชจ๋“  ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์Šค์บ”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ๋งŽ์€ ์‹œ๊ฐ„์„ ์†Œ๋ชจํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  1. # Normal Deletion


    • ์ฐธ์กฐ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋ฅผ ์ œ๊ฑฐํ•˜๊ณ , ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ Allocator๋Š” ๋ฐ˜ํ™˜๋˜์–ด ๋น„์–ด์ง„ ๋ธ”๋Ÿญ์˜ ์ฐธ์กฐ ์œ„์น˜๋ฅผ ์ €์žฅํ•ด ๋‘์—ˆ๋‹ค๊ณ  ์ƒˆ๋กœ์šด ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์„ ์–ธ๋˜๋ฉด ํ• ๋‹น๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

  1. # Compacting


    • ํผํฌ๋จผ์Šค๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด, ์ฐธ์กฐ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋˜ํ•œ ๋‚จ์€ ์ฐธ์กฐ๋˜์–ด์ง€๋Š” ๊ฐ์ฒด๋“ค์„ ๋ฌถ์Šต๋‹ˆ๋‹ค. ์ด๋“ค์„ ๋ฌถ์Œ์œผ๋กœ์„œ ๊ณต๊ฐ„์ด ์ƒ๊ธฐ๋ฏ€๋กœ ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์‹œ์— ๋” ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ์ง„ํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# Generational Garbage Collection ๋ฐฐ๊ฒฝ


์œ„์™€ ๊ฐ™์ด ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ Mark & Compact ํ•˜๋Š” JVM์€ ๋น„ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทธ๋ž˜ํ”„๋ฅผ ๋ณด์‹œ๊ฒ ์Šต๋‹ˆ๋‹ค.


Y์ถ•์€ ํ• ๋‹น๋œ ๋ฐ”์ดํŠธ์˜ ์ˆ˜์ด๊ณ  X์ถ•์€ ๋ฐ”์ดํŠธ๊ฐ€ ํ• ๋‹น๋  ๋•Œ์˜ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ๋ณด์‹œ๋‹ค์‹œํ”ผ ์‹œ๊ฐ„์ด ๊ฐˆ์ˆ˜๋ก ์ ์€ ๊ฐ์ฒด๋งŒ์ด ๋‚จ์Šต๋‹ˆ๋‹ค. ์œ„์™€ ๊ฐ™์€ ๊ทธ๋ž˜ํ”„์— ๊ธฐ๋ฐ˜ํ•œ ๊ฒƒ์ด Weak Generational Hypothesis ์ž…๋‹ˆ๋‹ค.


# Weak Generational Hypothesis


์‹ ๊ทœ๋กœ ์ƒ์„ฑํ•œ ๊ฐ์ฒด์˜ ๋Œ€๋ถ€๋ถ„์€ ๊ธˆ๋ฐฉ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ƒํƒœ๊ฐ€ ๋˜๊ณ , ์˜ค๋ž˜๋œ ๊ฐ์ฒด์—์„œ ์‹ ๊ทœ ๊ฐ์ฒด๋กœ์˜ ์ฐธ์กฐ๋Š” ๋งค์šฐ ์ ๊ฒŒ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฐ€์„ค์ž…๋‹ˆ๋‹ค.

์ด ๊ฐ€์„ค์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ์ž๋ฐ”๋Š” Young ์˜์—ญ๊ณผ Old ์˜์—ญ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ถ„ํ• ํ•˜๊ณ , ์‹ ๊ทœ๋กœ ์ƒ์„ฑ๋˜๋Š” ๊ฐ์ฒด๋Š” Young ์˜์—ญ์— ๋ณด๊ด€ํ•˜๊ณ , ์˜ค๋žซ๋™์•ˆ ์‚ด์•„๋‚จ์€ ๊ฐ์ฒด๋Š” Old ์˜์—ญ์— ๋ณด๊ด€ํ•ฉ๋‹ˆ๋‹ค.


# Generational Gabage Collection




  1. # Young ์˜์—ญ(Yong Generation ์˜์—ญ)

    ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑํ•œ ๊ฐ์ฒด์˜ ๋Œ€๋ถ€๋ถ„์ด ์—ฌ๊ธฐ์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฐ์ฒด๊ฐ€ ๊ธˆ๋ฐฉ ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ ์ƒํƒœ๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ๋งŽ์€ ๊ฐ์ฒด๊ฐ€ Young ์˜์—ญ์— ์ƒ์„ฑ๋˜์—ˆ๋‹ค๊ฐ€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ด ์˜์—ญ์—์„œ ๊ฐ์ฒด๊ฐ€ ์‚ฌ๋ผ์งˆ๋•Œ Minor GC ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.


  1. # Old ์˜์—ญ(Old Generation ์˜์—ญ)

    ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ ์ƒํƒœ๋กœ ๋˜์ง€ ์•Š์•„ Young ์˜์—ญ์—์„œ ์‚ด์•„๋‚จ์€ ๊ฐ์ฒด๊ฐ€ ์—ฌ๊ธฐ๋กœ ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ Young ์˜์—ญ๋ณด๋‹ค ํฌ๊ฒŒ ํ• ๋‹นํ•˜๋ฉฐ, ํฌ๊ธฐ๊ฐ€ ํฐ ๋งŒํผ Young ์˜์—ญ๋ณด๋‹ค GC๋Š” ์ ๊ฒŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜์—ญ์—์„œ ๊ฐ์ฒด๊ฐ€ ์‚ฌ๋ผ์งˆ ๋•Œ Major GC(ํ˜น์€ Full GC) ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.


  1. # Permanet ์˜์—ญ

    Method Area๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค. JVM์ด ํด๋ž˜์Šค๋“ค๊ณผ ๋ฉ”์†Œ๋“œ๋“ค์„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋“ค์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. JDK8๋ถ€ํ„ฐ๋Š” PermGen์€ Metaspace๋กœ ๊ต์ฒด๋ฉ๋‹ˆ๋‹ค.


# Generational Garbage Collection ๊ณผ์ •


  1. # ์–ด๋– ํ•œ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๊ฐ€ ๋“ค์–ด์˜ค๋ฉด Eden Space์— ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.


  1. # Eden space๊ฐ€ ๊ฐ€๋“์ฐจ๊ฒŒ ๋˜๋ฉด, minor garbage collection์ด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.


  1. # ์ฐธ์กฐ๋˜๋Š” ๊ฐ์ฒด๋“ค์€ ์ฒซ ๋ฒˆ์งธ survivor(S0)๋กœ ์ด๋™๋˜์–ด์ง€๊ณ , ๋น„ ์ฐธ์กฐ ๊ฐ์ฒด๋Š” Eden space๊ฐ€ clear ๋  ๋•Œ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.


  1. ๋‹ค์Œ minor GC ๋•Œ, Eden space์—์„œ๋Š” ๊ฐ™์€ ์ผ์ด ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค. ๋น„ ์ฐธ์กฐ ๊ฐ์ฒด๋Š” ์‚ญ์ œ๋˜๊ณ  ์ฐธ์กฐ ๊ฐ์ฒด๋Š” survivor space๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ์ผ€์ด์Šค์—์„œ ์ฐธ์กฐ ๊ฐ์ฒด๋Š” ๋‘ ๋ฒˆ์งธ survivor space๋กœ ์ด๋™ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์ตœ๊ทผ minor GC์—์„œ ์ฒซ ๋ฒˆ์งธ survivor space๋กœ ์ด๋™๋œ ๊ฐ์ฒด๋“ค๋„ age๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ณ  S1 ๊ณต๊ฐ„์œผ๋กœ ์ด๋™ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ•œ๋ฒˆ ๋ชจ๋“  surviving ๊ฐ์ฒด๋“ค์ด S1์œผ๋กœ ์ด๋™ํ•˜๊ฒŒ ๋˜๋ฉด S0์™€ Eden ๊ณต๊ฐ„์€ Clear ๋ฉ๋‹ˆ๋‹ค. ์ฃผ์˜ํ•ด์•ผํ•  ์ ์€ ์ด์ œ ์šฐ๋ฆฌ๋Š” ๋‹ค๋ฅธ aged ๊ฐ์ฒด๋“ค์„ ์„œ๋ฐ”์ด๋ฒ„ ๊ณต๊ฐ„์— ๊ฐ€์ง€๊ฒŒ ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.


  1. ๋‹ค์Œ minor GC ๋•Œ, ๊ฐ™์€ ๊ณผ์ •์ด ๋ฐ˜๋ณต ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๋ฒˆ์—” survivor space๋“ค์€ switch ๋ฉ๋‹ˆ๋‹ค. ์ฐธ์กฐ๋˜๋Š” ๊ฐ์ฒด๋“ค์€ S0๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์‚ด์•„๋‚จ์€ ๊ฐ์ฒด๋“ค์€ aged๋˜์ฃ . ๊ทธ๋ฆฌ๊ณ  Eden๊ณผ S1 ๊ณต๊ฐ„์€ Clear ๋ฉ๋‹ˆ๋‹ค.


  1. ์•„๋ž˜ ๊ทธ๋žจ์€ promotion์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. minor GC ํ›„ aged ์˜ค๋ธŒ์ ํŠธ๋“ค์ด ์ผ์ •ํ•œ age threshold(๋ฌธ์ง€๋ฐฉ)์„ ๋„˜๊ฒŒ ๋˜๋ฉด ๊ทธ๋“ค์€ young generation์—์„œ old๋กœ promotion ๋˜์–ด์ง‘๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” 8์„ ์˜ˆ๋กœ ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.


  1. minor GC๊ฐ€ ๊ณ„์†๋˜๊ณ  ๊ณ„์†ํ•ด์„œ ๊ฐ์ฒด๋“ค์ด Old Generation์œผ๋กœ ์ด๋™๋ฉ๋‹ˆ๋‹ค.


  1. ์•„๋ž˜ ๊ทธ๋ฆผ์€ ์ „ ๊ณผ์ •์„ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ major GC๊ฐ€ old Generation์— ์‹œํ–‰๋˜๊ณ , old Generation์€ Clear ๋˜๊ณ , ๊ณต๊ฐ„์ด Compact ๋˜์–ด์ง‘๋‹ˆ๋‹ค.



# Conclusion


์ด์™ธ์—๋„ ์ •๋ง ๋งŽ์€ ๋‚ด์šฉ์ด ์žˆ์ง€๋งŒ, ๊ฐ„๋‹จํ•˜๊ฒŒ๋‚˜๋งˆ GC์˜ ๊ฐœ๋…๊ณผ ์ž‘๋™์›๋ฆฌ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž ๊ธฐ์ˆ  ๋ฉด์ ‘์—์„œ๋„ ์ข…์ข… ๋‚˜์˜ค๋‹ˆ ์ด๋ฒˆ์— ํ™•์‹คํ•˜๊ฒŒ ํ•™์Šตํ•ด๋‘๋ฉด ๋„์›€์ด ๋งŽ์ด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.



# [์ฐธ๊ณ  ์ž๋ฃŒ]

์ตœ์ข… ์ˆ˜์ • : 11/15/2021, 1:31:19 PM