Home > CS > 2024 > ๐Ÿ’พ [CS] ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(Garbage Collection)์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”?

๐Ÿ’พ [CS] ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(Garbage Collection)์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”?
CS

๐Ÿ’พ [CS] ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(Garbage Collection)์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”?

  • ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(Garbage Collection)์€ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ž๋™์œผ๋กœ ํ•ด์ œํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.
  • ์ž๋ฐ”(Java)์™€ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ, ๊ฐœ๋ฐœ์ž๊ฐ€ ์ˆ˜๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•˜์ง€ ์•Š์•„๋„ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ(Garbage Collector)๊ฐ€ ์ž๋™์œผ๋กœ ๋ถˆํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšŒ์ˆ˜ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜(Memory Leak)๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

1๏ธโƒฃ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์˜ ํ•„์š”์„ฑ.

1๏ธโƒฃ ์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ.

  • ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(Garbage Collection)์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ณผ ํ•ด์ œ๋ฅผ ์ง์ ‘ ๊ด€๋ฆฌํ•  ํ•„์š” ์—†์ด, ํž™ ๋ฉ”๋ชจ๋ฆฌ(Heap Memory)์—์„œ ๋” ์ด์ƒ ์ฐธ์กฐ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋ฅผ ์ž๋™์œผ๋กœ ์ œ๊ฑฐํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ๊ฐ„ํŽธํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ž๋ฐ”(Java)์™€ ๊ฐ™์€ ์–ธ์–ด์—์„œ๋Š” new ํ‚ค์›Œ๋“œ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋‚˜๋ฉด, ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ๋ฅผ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ(Garbage Collector)์— ๋งก๊ธฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

2๏ธโƒฃ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๋ฐฉ์ง€.

  • ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(Garbage Collection)์€ ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฐ์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œ๋˜์ง€ ์•Š๊ณ  ๊ณ„์† ๋‚จ์•„ ์žˆ์–ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜๋Š” ์ƒํ™ฉ, ์ฆ‰ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜(Memory Leak)๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.
    • ์ด๋ฅผ ํ†ตํ•ด ํšจ์œจ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

2๏ธโƒฃ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(Garbage Collection)์˜ ๊ธฐ๋ณธ ์›๋ฆฌ.

1๏ธโƒฃ ๊ฐ์ฒด์˜ ์ˆ˜๋ช… ์ฃผ๊ธฐ.

  • ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ฉด์„œ, ๊ฐ์ฒด๋Š” ํž™ ๋ฉ”๋ชจ๋ฆฌ(Heap Memory)์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
    • ์–ด๋–ค ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋œ ํ›„, ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ณ€์ˆ˜๋‚˜ ๋‹ค๋ฅธ ๊ฐ์ฒด๊ฐ€ ์—†์œผ๋ฉด, ๊ทธ ๊ฐ์ฒด๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” โ€œ์“ฐ๋ ˆ๊ธฐ(Garbage)โ€๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  • ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ(Garbage Collector)๋Š” ์ฃผ๊ธฐ์ ์œผ๋กœ ํž™ ๋ฉ”๋ชจ๋ฆฌ(Heap Memory)๋ฅผ ์Šค์บ”ํ•˜์—ฌ ๋” ์ด์ƒ ์ฐธ์กฐ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋ฅผ ์ฐพ์•„ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐ ํ•ฉ๋‹ˆ๋‹ค.

2๏ธโƒฃ ์ฐธ์กฐ์˜ ๊ฐœ๋….

  • ๊ฐ์ฒด๋Š” ์ฐธ์กฐ ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ(Garbage Collector)๋Š” ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ ๊ฐ์ฒด๋‚˜ ๋ณ€์ˆ˜๋กœ๋ถ€ํ„ฐ ์ฐธ์กฐ๋˜๊ณ  ์žˆ๋Š”์ง€๋ฅผ ํŒ๋‹จํ•ด ๊ฐ€๋น„์ง€(Garbage) ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ์ฐธ์กฐ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋Š” ๋” ์ด์ƒ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ, ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ(Garbage Collector)๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3๏ธโƒฃ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(Garbage Collection)์˜ ๋™์ž‘ ๋ฐฉ์‹.

  • ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(Garbage Collection)์˜ ๊ตฌ์ฒด์ ์ธ ๋™์ž‘ ๋ฐฉ์‹์€ ์‚ฌ์šฉ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
    • ์ž๋ฐ”์—์„œ๋Š” ๋‹ค์–‘ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(Garbage Collection)์„ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋ฉฐ, ๊ทธ์ค‘ ๋Œ€ํ‘œ์ ์ธ ๋ช‡ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

1๏ธโƒฃ ๋งˆํฌ-์•ค-์Šค์œ•(Mark-and-Sweep) ์•Œ๊ณ ๋ฆฌ์ฆ˜.

  • ๋งˆํฌ ๋‹จ๊ณ„(Mark Phase)
    • ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ์ฐธ์กฐ ๊ฐ€๋Š”ํ•œ ๊ฐ์ฒด๋ฅผ โ€œ๋งˆํ‚นโ€ ํ•ฉ๋‹ˆ๋‹ค.
      • ์ฐธ์กฐ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋Š” ๋งˆํ‚น๋˜์ง€ ์•Š์€ ์ฑ„๋กœ ๋‚จ์Šต๋‹ˆ๋‹ค.
  • ์Šค์œ• ๋‹จ๊ณ„(Sweep Phase)
    • ๋งˆํ‚น์ด ๋˜์ง€ ์•Š์€ ๊ฐ์ฒด๋ฅผ ํž™ ๋ฉ”๋ชจ๋ฆฌ(Heap Memory)์—์„œ ์ œ๊ฑฐํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšŒ์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด ๊ณผ์ •์—์„œ ํž™ ๋ฉ”๋ชจ๋ฆฌ ์กฐ๊ฐํ™”(Fragmentation)๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2๏ธโƒฃ ๋ณต์‚ฌ(Copying) ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ํž™ ๋ฉ”๋ชจ๋ฆฌ(Heap Memory) ๋‘ ๊ฐœ์˜ ์˜์—ญ(From-Space์™€ To-Space)์œผ๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค.
  • ์ฐธ์กฐ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋ฅผ To-Space๋กœ ๋ณต์‚ฌํ•˜๊ณ , From-Space์— ๋‚จ์€ ์“ฐ๋ ˆ๊ธฐ ๊ฐ์ฒด๋Š” ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณต์‚ฌ ๊ณผ์ •์—์„œ ๋ฉ”๋ชจ๋ฆฌ ์กฐ๊ฐํ™”(Memory Fragmentation) ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‘ ๊ฐœ์˜ ์˜์—ญ์œผ๋กœ ๋‚˜๋ˆ„์–ด์•ผ ํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“ ๋ฉ”๋ชจ๋ฆฌ ์กฐ๊ฐํ™”(Memory Fragmentation)

ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ณ  ํ•ด์ œํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ์ชผ๊ฐœ์ ธ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.
์ด๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„์ด ์ถฉ๋ถ„ํžˆ ์กด์žฌํ•จ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ์—ฐ์†์ ์ธ ํฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒํ™ฉ์„ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฉ”๋ชจ๋ฆฌ ์กฐ๊ฐํ™”(Memory Fragmentation)๋Š” ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ ์ €ํ•˜์™€ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„์˜ ์›์ธ์ด ๋˜๋ฉฐ, ํŠนํžˆ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ž์ฃผ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

3๏ธโƒฃ ์„ธ๋Œ€๋ณ„(Generational) ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜.

  • ์ž๋ฐ”์˜ HotSpot JVM์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๋ฐฉ์‹์œผ๋กœ, ๊ฐ์ฒด์˜ ์ˆ˜๋ช…์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ํž™ ๋ฉ”๋ชจ๋ฆฌ(Heap Memory)๋ฅผ Young Generation, Old Generation, Permanent Generation์œผ๋กœ ๋‚˜๋ˆ„์–ด, ๊ฐ์ฒด์˜ ์ˆ˜๋ช…์— ๋”ฐ๋ผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    • Young Generation
      • ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„์œผ๋กœ, ๋Œ€๋ถ€๋ถ„์˜ ๊ฐ์ฒด๋Š” ์—ฌ๊ธฐ์— ์ƒ์„ฑ๋˜๋ฉฐ ๋น ๋ฅด๊ฒŒ ์†Œ๋ฉธํ•ฉ๋‹ˆ๋‹ค.
        • Minor GC๊ฐ€ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฐœ์ƒํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.
    • Old Generation
      • Young Generation์„ ๊ฑฐ์ณ ์˜ค๋ž˜ ์‚ด์•„๋‚จ์€ ๊ฐ์ฒด๊ฐ€ ์ด๋™ํ•˜๋Š” ๊ณต๊ฐ„์œผ๋กœ, Major GC๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.
    • Permanent Generation(Metaspace)
      • ํด๋ž˜์Šค ์ •๋ณด, ๋ฉ”์„œ๋“œ, ์ƒ์ˆ˜ ํ’€ ๋“ฑ JVM์— ํ•„์š”ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค.
        • Java 8 ๋ถ€ํ„ฐ๋Š” Metaspace๋ผ๋Š” ์ƒˆ๋กœ์šด ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(Metadata)

๋ฐ์ดํ„ฐ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
์ฆ‰, ์–ด๋–ค ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ •๋ณด๋‚˜ ์†์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ๋ฐ์ดํ„ฐ๋กœ, ์›๋ณธ ๋ฐ์ดํ„ฐ์˜ ๋‚ด์šฉ, ๊ตฌ์กฐ, ํ˜•์‹, ์†์„ฑ ๋“ฑ์„ ์„ค๋ช…ํ•˜๊ณ  ์ •์˜ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋” ์ž˜ ์ดํ•ดํ•˜๊ณ , ์ฐพ๊ณ , ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.

4๏ธโƒฃ ์ž๋ฐ”์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๊ณผ์ •.

1๏ธโƒฃ Minor GC

  • Young Generation์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์ž…๋‹ˆ๋‹ค.
    • ์ƒˆ๋กœ์šด ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๋‹ค๊ฐ€ Young Generation์ด ๊ฐ€๋“ ์ฐจ๊ฒŒ ๋˜๋ฉด Minor GC๊ฐ€ ์‹คํ–‰๋˜์–ด ์ฐธ์กฐ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
  • Minor GC๋Š” ๋น ๋ฅด๊ณ  ์ž์ฃผ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

2๏ธโƒฃ Major GC(Full GC)

  • Old Generation์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์ž…๋‹ˆ๋‹ค.
    • Young Generation์„ ๊ฑฐ์ณ ์˜ค๋ž˜ ์‚ด์•„๋‚จ์€ ๊ฐ์ฒด๊ฐ€ Old Generation์œผ๋กœ ์ด๋™ํ•˜๊ฒŒ ๋˜๋ฉฐ, Old Generation์ด ๊ฐ€๋“ ์ฐจ๋ฉด Major GC๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  • Major GC๋Š” Minor GC์— ๋น„ํ•ด ๋Š๋ฆฌ๊ณ , ํ”„๋กœ๊ทธ๋žจ์˜ ์ผ์‹œ์ ์ธ ์ค‘๋‹จ(Stop-the-World)์„ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5๏ธโƒฃ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์˜ ์žฅ๋‹จ์ .

1๏ธโƒฃ ์žฅ์ .

  • ์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ
    • ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์ˆ˜๋™์œผ๋กœ ํ•˜์ž ์•Š์•„๋„ ๋˜์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ„ํŽธํ•ด์ง€๊ณ , ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜(Memory Leak)์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํšจ์œจ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ
    • ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ(Garbage Collector)๋Š” ๋ถˆํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ์ž๋™์œผ๋กœ ํšŒ์ˆ˜ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค.

2๏ธโƒฃ ๋‹จ์ .

  • ์„ฑ๋Šฅ ๋ฌธ์ œ
    • ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(Garbage Collection)์ด ์‹คํ–‰๋  ๋•Œ ํ”„๋กœ๊ทธ๋žจ์ด ์ผ์‹œ์ ์œผ๋กœ ๋ฉˆ์ถœ ์ˆ˜ ์žˆ๋Š” โ€œStop-the-Worldโ€ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์˜ˆ์ธก ๋ถˆ๊ฐ€๋Šฅํ•œ ์‹คํ–‰ ์‹œ์ 
    • ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(Garbage Collection)์€ ํŠน์ • ์‹œ์ ์— ์˜ˆ์ธก ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ์‹คํ–‰๋˜๋ฏ€๋กœ, ์‹ค์‹œ๊ฐ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

6๏ธโƒฃ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์˜ ์ตœ์ ํ™” ๋ฐฉ๋ฒ•.

1๏ธโƒฃ JVM ์˜ต์…˜ ์„ค์ •.

  • -Xms, -Xmx, -Xmn ๋“ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ํž™ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์ ์ ˆํžˆ ์„ค์ •ํ•จ์œผ๋กœ์จ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์˜ ๋นˆ๋„๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, -Xms512m -Xmx1024m ์˜ต์…˜์€ JVM์ด ์‹œ์ž‘ํ•  ๋•Œ 512MB์˜ ํž™ ๋ฉ”๋ชจ๋ฆฌ(Heap Memory)๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์ตœ๋Œ€ 1024MB๊นŒ์ง€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

2๏ธโƒฃ GC ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ ํƒ.

  • JVM์€ ๋‹ค์–‘ํ•œ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ง€์›ํ•˜๋ฉฐ, ํ”„๋กœ๊ทธ๋žจ์˜ ํŠน์„ฑ์— ๋งž๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•˜๋ฉด ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์˜ˆ: Serial GC, Paralle GC, G1 GC ๋“ฑ. G1 GC๋Š” Stop-the-World ํ˜„์ƒ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๋ฐ ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

3๏ธโƒฃ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ์˜ˆ๋ฐฉ.

  • ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ(Garbage Collector)๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•˜์ง€๋งŒ, ๋ช…์‹œ์ ์œผ๋กœ ํ•ด์ œํ•  ์ˆ˜ ์—†๋Š” ๋ฆฌ์†Œ์Šค(ํŒŒ์ผ ํ•ธ๋“ค, ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ๋“ฑ)๋Š” ์ฝ”๋“œ์—์„œ ์ง์ ‘ ๊ด€๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ „์—ญ ๋ณ€์ˆ˜๋‚˜ static ๊ฐ์ฒด๋กœ ์ธํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜(Memory Leak)๋ฅผ ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์ด๋Ÿฌํ•œ ๊ฐ์ฒด๊ฐ€ ์ฐธ์กฐ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์žˆ์œผ๋ฉด ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ(Garbage Collector)๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

7๏ธโƒฃ ์š”์•ฝ.

  • ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(Garbage Collection)์€ ์ž๋ฐ”์™€ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ๊ฐ์ฒด๋ฅผ ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜(Memory Leak)๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.
  • ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ(Garbage Collector)๋Š” ์ฃผ๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋˜์–ด, ์ฐธ์กฐ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšŒ์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์ž๋ฐ”์—์„œ๋Š” ์„ธ๋Œ€๋ณ„ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(Garbage Collection)์„ ํ†ตํ•ด ๊ฐ์ฒด์˜ ์ˆ˜๋ช…์— ๋”ฐ๋ผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๋•๋ถ„์— ๊ฐœ๋ฐœ์ž๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ๋ถ€๋‹ด์„ ๋œ๊ณ , ๋” ์•ˆ์ •์ ์ด๊ณ  ํšจ์œจ์ ์ธ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.