๐ŸถGC๋ž€ ๋ฌด์—‡์ด๋ฉฐ STOP THE WORLD๋Š” ์™œ ๋ฐœ์ƒํ• ๊นŒ?

์œ ์‚ฌ๊ฐœ๋ฐœ์žยท2024๋…„ 4์›” 11์ผ
0

์ด๋ก ๊ณต๋ถ€

๋ชฉ๋ก ๋ณด๊ธฐ
1/10

1. GC๋ž€

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

Young ์˜์—ญ

  • ์ƒˆ๋กœ์šด ๊ฐ์ฒด๊ฐ€ ํ• ๋‹น๋˜๋Š” ์˜์—ญ
  • young์˜์—ญ์—์„œ ์ผ์–ด๋‚˜๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ Minor GC๋ผ๊ณ  ํ•œ๋‹ค.

young์˜์—ญ์€ ๋˜ ๋‹ค์‹œ 3๊ฐ€์ง€ ์˜์—ญ์œผ๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

Eden, Survivor 0, Survivor 1

Eden

  • new๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ ๊ฐ์ฒด
  • ์ •๊ธฐ์ ์ธ GC ์ž‘์—… ์ดํ›„ ์‚ด์•„๋‚จ์€ ๊ฐ์ฒด๋“ค์€ Survivor๋กœ ๋ณด๋‚ด์ง„๋‹ค.

Survivor 0, Survivor 1

  • ์ตœ์†Œ 1๋ฒˆ์˜ GC์—์„œ ์‚ด์•„๋‚จ์€ ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•œ๋‹ค.
  • Survivor 0, Survivor 1 ๋‘˜ ์ค‘ ํ•˜๋‚˜๋Š” ๊ผญ ๋น„์–ด์žˆ์–ด์•ผ ํ•œ๋‹ค.

Old ์˜์—ญ

  • young์˜์—ญ์—์„œ ์‚ด์•„๋‚จ์€ ๊ฐ์ฒด๊ฐ€ ๋ณต์‚ฌ๋˜๋Š” ์˜์—ญ
  • young์˜์—ญ๋ณด๋‹ค ํฌ๊ฒŒ ํ• ๋‹น๋˜๋ฉฐ, ์˜์—ญ์˜ ํฌ๊ธฐ๊ฐ€ ํฐ ๋งŒํผ GC๋Š” ์ ๊ฒŒ ๋ฐœ์ƒํ•œ๋‹ค.
  • Old ์˜์—ญ์˜ ๋Œ€ํ•œ GC๋ฅผ Major GC๋ผ๊ณ  ํ•œ๋‹ค.

Old ์˜์—ญ์ด Young ์˜์—ญ๋ณด๋‹ค ํฌ๊ฒŒ ํ• ๋‹น๋˜๋Š” ์ด์œ ๋Š” Young ์˜์—ญ์˜ ์ˆ˜๋ช…์ด ์งง์€ ๊ฐ์ฒด๋“ค์€ ํฐ ๊ณต๊ฐ„์„ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ํฐ ๊ฐ์ฒด๋“ค์€ ๊ณง๋ฐ”๋กœ Old ์˜์—ญ์— ํ• ๋‹น๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

2. GC ๋™์ž‘ ๋ฐฉ์‹

Young์˜์—ญ๊ณผ Old์˜์—ญ์€ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„ธ๋ถ€์ ์€ ๋™์ž‘ ๋ฐฉ์‹์€ ๋‹ค๋ฅด์ง€๋งŒ, ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์ด ์‹คํ–‰๋œ๋‹ค๊ณ  ํ•œ๋‹ค๋ฉด ๋‹ค์Œ์˜ 2๊ฐ€์ง€ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด๊ฒŒ ๋œ๋‹ค.

2-1. Stop The World
2-2. Mark and Sweep

2-1. Stop The World

Stop The World๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด JVM์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‹คํ–‰์„ ๋ฉˆ์ถ”๋Š” ์ž‘์—…์ด๋‹ค. GC๊ฐ€ ์‹คํ–‰๋  ๋•Œ๋Š” GC๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์“ฐ๋ ˆ๋“œ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์“ฐ๋ ˆ๋“œ๋“ค์ด ์ค‘๋‹จ๋œ๋‹ค. ๋ชจ๋“  ์“ฐ๋ ˆ๋“œ๋“ค์˜ ์ž‘์—…์ด ์ค‘๋‹จ๋œ๋‹ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜ํ•œ ์ค‘๋‹จ๋˜๊ธฐ ๋•Œ๋ฌธ์— GC์˜ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋ณดํ†ต Stop The World ์‹œ๊ฐ„์„ ์ค„์ด๋Š” ์ž‘์—…์„ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋ž˜์„œ ์™œ ํ•˜๋Š”๊ฑธ๊นŒ? ๊ทธ ์ด์œ ๋Š” ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ๋‹จํŽธํ™”

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

GC ๋˜ํ•œ ํ• ๋‹น ๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œ ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ์ƒˆ๋กœ ๋‚จ๋Š”๋ฐ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Compaction์ด ์ผ์–ด๋‚˜์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๊ฐ์ฒด๋ฅผ ์ƒˆ๋กœ์šด ์ฃผ์†Œ๋กœ ์ด๋™ ์‹œํ‚ค๊ณ  ๋‹ค์‹œ ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ์ผ๊ด€์„ฑ์œ ์ง€

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๊ณผ์ • ์ค‘์—๋Š” ํž™ ๋‚ด์˜ ๊ฐ์ฒด๋“ค์ด ์ด๋™๋˜๊ฑฐ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œ๋  ์ˆ˜ ์žˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์ด๋Ÿฌํ•œ ์ž‘์—…์ด ์ง„ํ–‰๋˜๋Š” ๋™์•ˆ ๊ณ„์† ์‹คํ–‰๋œ๋‹ค๋ฉด ์Šค๋ ˆ๋“œ๊ฐ€ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฐ์ฒด๊ฐ€ ๋” ์ด์ƒ ์œ ์š”ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ์œ„์น˜์— ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.
(Compaction์ด ๋ฐœ์ƒํ•ด์„œ ๊ฐ์ฒด๊ฐ€ ์ด๋™ํ•˜๋Š” ๊ณผ์ •์—์„œ ์Šค๋ ˆ๋“œ๊ฐ€ ์˜๋„์น˜ ์•Š์€ ์ „ํ˜€ ๋‹ค๋ฅธ ๊ฐ์ฒด ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜๋„ ์žˆ์Œ)
์ฆ‰, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๊ฐ์ฒด ์ฐธ์กฐ ์‹œ ์˜๋„์น˜์•Š์€ ์ƒํ™ฉ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด์„œ stop the world๋ฅผ ํ•œ๋‹ค.

2-2 Mark and Sweep

  • Mark : ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์™€ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‹๋ณ„ํ•˜๋Š” ์ž‘์—…
  • Sweep : Mark ๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ์œผ๋กœ ์‹๋ณ„๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•˜๋Š” ์ž‘์—…

stop the world๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ์ž‘์—…์„ ์ค‘๋‹จ์‹œํ‚ค๋ฉด GC๋Š” Reachable ๊ฐ์ฒด๋ฅผ ์Šค์บ”ํ•˜๋ฉด์„œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‹๋ณ„ํ•œ๋‹ค(Mark) ์ดํ›„ Mark๊ฐ€ ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋“ค์„ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐํ•œ๋‹ค(Sweep)

Minor GC์˜ ๋™์ž‘ ๋ฐฉ์‹

๊ฐ์ฒด๊ฐ€ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑ๋˜๋ฉด Eden ์˜์—ญ์— ํ• ๋‹น๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Eden ์˜์—ญ์ด ๊ฝ‰ ์ฐจ๋ฉด Minor GC๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ•ด์ œ๋˜๊ณ  Eden ์˜์—ญ์— ์กด์žฌํ•˜๋Š” ๊ฐ์ฒด๋Š” Survivor ์˜์—ญ์œผ๋กœ ์˜ฎ๊ฒจ์ง€๊ฒŒ ๋œ๋Œœ. Survivor ์˜์—ญ์€ ์ด 2๊ฐœ์ง€๋งŒ ๋ฐ˜๋“œ์‹œ 1๊ฐœ๋Š” ๋น„์–ด์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ž์„ธํžˆ ์‚ดํŽด๋ณธ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๊ฐ€ Eden ์˜์—ญ์— ํ• ๋‹น๋œ๋‹ค.
  2. ๊ฐ์ฒด๊ฐ€ ๊ณ„์† ์ƒ์„ฑ๋˜์–ด Eden ์˜์—ญ์ด ๊ฝ‰์ฐจ๊ฒŒ ๋˜๊ณ  Minor GC๊ฐ€ ์‹คํ–‰๋œ๋‹ค.
    2-1. Eden ์˜์—ญ์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•œ๋‹ค.
    2-2. Eden ์˜์—ญ์—์„œ ์‚ด์•„๋‚จ์€ ๊ฐ์ฒด๋Š” 1๊ฐœ์˜ Survivor ์˜์—ญ์œผ๋กœ ์ด๋™ํ•œ๋‹ค.
  3. 1~2 ๋ฒˆ์˜ ๊ณผ์ •์ด ๋ฐ˜๋ณต๋˜๋‹ค๊ฐ€ Survivor ์˜์—ญ์ด ๊ฐ€๋“์ฐจ๊ฒŒ ๋˜๋ฉด Survivor ์˜์—ญ์˜ ์‚ด์•„๋‚จ์€ ๊ฐ์ฒด๋ฅผ ๋‹ค๋ฅธ Survivor ์˜์—ญ์œผ๋กœ ์ด๋™์‹œํ‚จ๋‹ค.
  4. ์ด๋Ÿฌํ•œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜์—ฌ ์‚ด์•„๋‚จ์€ ๊ฐ์ฒด๋Š” Old์˜์—ญ์œผ๋กœ ์ด๋™(Promotion)๋œ๋‹ค.

Major GC์˜ ๋™์ž‘ ๋ฐฉ์‹

Young ์˜์—ญ์—์„œ ์˜ค๋ž˜ ์‚ด์•„๋‚จ์€ ๊ฐ์ฒด๋Š” Old์˜์—ญ์œผ๋กœ ์ด๋™๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Major GC๋Š” ๊ฐ์ฒด๋“ค์ด ๊ณ„์† Promotion ๋˜์–ด Old ์˜์—ญ์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ด์ง€๋ฉด ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค. Young ์˜์—ญ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ํฌํ‚ค๊ฐ€ ์ž‘๊ธฐ ๋•Œ๋ฌธ์— GC๊ฐ€ ๋ณดํ†ต 0.5์ดˆ์—์„œ 1์ดˆ ์‚ฌ์ด์— ๋๋‚œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— Minor GC๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํฌ๊ฒŒ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ Old ์˜์—ญ์€ Young ์˜์—ญ๋ณด๋‹ค ํฌ๋ฉฐ Young์˜์—ญ์„ ์ฐธ์กฐํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์œผ๋กœ Minor GC๋ณด๋‹ค ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋ฉฐ 10๋ฐฐ ์ด์ƒ์˜ ์‹œ๊ฐ„์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ฐธ๊ณ ๋กœ Young ์˜์—ญ๊ณผ Old ์˜์—ญ์„ ๋™์‹œ ์ฒ˜๋ฆฌํ•˜๋Š” GC๋Š” Full GC๋ผ๊ณ  ํ•œ๋‹ค.

์š”์•ฝ

GC ์ข…๋ฅ˜Minor GCMajor GC
๋Œ€์ƒYoung GenerationOld Generation
์‹คํ–‰์‹œ์ Eden ์˜์—ญ์ด ๊ฝ‰ ์ฐฌ ๊ฒฝ์šฐOld ์˜์—ญ์ด ๊ฝ‰ ์ฐฌ ๊ฒฝ์šฐ
์‹คํ–‰์†๋„๋น ๋ฅด๋‹ค๋Š๋ฆฌ๋‹ค
profile
๊ฐœ๋ฐœ์ž์™€ ์œ ์‚ฌํ•œ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค

0๊ฐœ์˜ ๋Œ“๊ธ€