๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐‘†๐‘ข๐‘›๐‘ โ„Ž๐‘–๐‘›๐‘’ ๐‘Ž๐‘“๐‘ก๐‘’๐‘Ÿ ๐‘Ÿ๐‘Ž๐‘–๐‘›โœง

[REVIEW] JVM ๋ฐ‘๋ฐ”๋‹ฅ๊นŒ์ง€ ํŒŒํ—ค์น˜๊ธฐ - 3.2 ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ ์ข…๋ฅ˜, ๋กœ๊ทธ, ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ณผ ํšŒ์ˆ˜ ์ „๋žต ๋ณธ๋ฌธ

๐—ฃ๐—ฟ๐—ผ๐—ด๐—ฟ๐—ฎ๐—บ๐—บ๐—ถ๐—ป๐—ด๐Ÿ’ป/๐‰๐š๐ฏ๐š

[REVIEW] JVM ๋ฐ‘๋ฐ”๋‹ฅ๊นŒ์ง€ ํŒŒํ—ค์น˜๊ธฐ - 3.2 ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ ์ข…๋ฅ˜, ๋กœ๊ทธ, ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ณผ ํšŒ์ˆ˜ ์ „๋žต

๐ŸคRyusun๐Ÿค 2025. 2. 22. 09:33

ํด๋ž˜์‹ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ

ํด๋ž˜์‹ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋Š” ๊ณ ์„ฑ๋Šฅ ๋ฐ ์ €์ง€์—ฐ ์ปฌ๋ ‰ํ„ฐ์™€ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์šฉ์–ด๋กœ, ํ•ซ์ŠคํŒŸ ๊ฐ€์ƒ ๋จธ์‹ ์—์„œ ์ œ๊ณตํ•˜๋Š” ์ „ํ†ต์ ์ธ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๋ฐฉ์‹๋“ค์„ ํฌํ•จํ•œ๋‹ค. ์ด ์ปฌ๋ ‰ํ„ฐ๋“ค์€ ๊ฐ๊ฐ์˜ ํŠน์„ฑ์— ๋”ฐ๋ผ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ์ฃผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค:

  1. ์‹œ๋ฆฌ์–ผ(Serial) ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ: ๋‹จ์ผ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๊ฐ„๋‹จํ•˜๊ณ  ํšจ์œจ์ ์ด๋ฉฐ, ์ž‘์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ œํ•œ๋œ ํ™˜๊ฒฝ์—์„œ ์ ํ•ฉํ•˜๋‹ค.
  2. ํŒŒ๋‰ด(Parallel) ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ: ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ๋ณ‘๋ ฌ๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค. CPU๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•˜์—ฌ ์งง์€ ์‹œ๊ฐ„ ์•ˆ์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšŒ์ˆ˜ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์—ฌ์ „ํžˆ ์ผ์‹œ ์ •์ง€๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. ํŒจ๋Ÿฌ๋  ์Šค์บ๋นˆ์ง€(Parallel Scavenge) ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ: ํŒŒ๋‰ด์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ์งง์€ ์ผ์‹œ ์ •์ง€ ์‹œ๊ฐ„๊ณผ ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค. ๊ฐ์ฒด์˜ ์ƒ์กด ์ฃผ๊ธฐ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์‹ ์„ธ๋Œ€ ๊ฐ์ฒด์˜ ํšŒ์ˆ˜๋ฅผ ์ตœ์ ํ™”ํ•œ๋‹ค.
  4. ํŒจ๋Ÿฌ๋  ์˜ฌ๋“œ(Parallel Old) ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ: ๊ตฌ์„ธ๋Œ€(Old Generation)์—์„œ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ๋ณ‘๋ ฌ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ์ปฌ๋ ‰ํ„ฐ๋กœ, ํŒจ๋Ÿฌ๋  ์Šค์บ๋นˆ์ง€ ์ปฌ๋ ‰ํ„ฐ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋œ๋‹ค.
  5. ์‹œ๋ฆฌ์–ผ ์˜ฌ๋“œ(Serial Old) ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ: ๋‹จ์ผ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ธ๋Œ€์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ž์›์ด ์ œํ•œ๋œ ํ™˜๊ฒฝ์—์„œ ํšจ๊ณผ์ ์ด๋ฉฐ, ๋‹ค๋ฅธ ์‹œ๋ฆฌ์–ผ ์ปฌ๋ ‰ํ„ฐ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  6. CMS(Concurrent Mark-Sweep) ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ: ๋™์‹œ(mark-sweep) ๋ฐฉ์‹์œผ๋กœ ๊ตฌ์„ธ๋Œ€ ๊ฐ์ฒด๋ฅผ ํšŒ์ˆ˜ํ•˜๋Š” ์ปฌ๋ ‰ํ„ฐ๋กœ, ์‘๋‹ต์„ฑ์ด ์ค‘์š”ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉํ•˜๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ ์‹œ์ ์— ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์–ด ์ผ์‹œ ์ •์ง€ ์‹œ๊ฐ„์„ ์ค„์ด๋Š” ๋ฐ ๊ธฐ์—ฌํ•œ๋‹ค.
๋ณ‘๋ ฌ๊ณผ ๋™์‹œ
๋ณ‘๋ ฌ๊ณผ ๋™์‹œ๋Š” ๋ชจ๋‘ '๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ'๊ณผ ๊ด€๋ จ๋œ ๊ธฐ์ˆ  ์šฉ์–ด์ด๋‹ค. 

- ๋ณ‘๋ ฌ(parallel) : GC ์Šค๋ ˆ๋“œ๋“ค ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ์„ค๋ช…ํ•˜๋ฉฐ, 'GC ์Šค๋ ˆ๋“œ ๋‹ค์ˆ˜๊ฐ€' ๋™์‹œ์— ํ•จ๊ป˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋ณดํ†ต ์ด๋•Œ ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ๋Š” ์ •์ง€ ์ƒํƒœ๋‹ค.
- ๋™์‹œ(concurrent) : GC ์Šค๋ ˆ๋“œ์™€ ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ์˜ ๊ด€๊ณ„๋ฅผ ์„ค๋ช…ํ•˜๋ฉฐ, 'GC ์Šค๋ ˆ๋“œ์™€ ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ๊ฐ€' ๋™์‹œ์— ์ผ์„ ์ง„ํ–‰ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค. ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฉˆ์ถฐ ์žˆ์ง€ ์•Š์•„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์„œ๋น„์Šค ์š”์ฒญ์— ์‘๋‹ตํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ GC ์Šค๋ ˆ๋“œ๊ฐ€ ์‹œ์Šคํ…œ ์ž์› ์ผ๋ถ€๋ฅผ ์ ์œ ํ•˜๋ฏ€๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฒ˜๋ฆฌ๋Ÿ‰์€ ํ‰์†Œ๋ณด๋‹ค ๋‚ฎ์•„์งˆ ์ˆ˜ ์žˆ๋‹ค.

 

 

1. ์‹œ๋ฆฌ์–ผ ์ปฌ๋ ‰ํ„ฐ

  • ๊ฐ€์žฅ ๊ธฐ์ดˆ์ ์ด๋กœ ์˜ค๋ž˜๋œ ์ปฌ๋ ‰ํ„ฐ
  • ๋‹จ์ผ ์Šค๋ ˆ๋“œ
  • ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์ด ์‹œ์ž‘๋˜๋ฉด 'ํšŒ์ˆ˜๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ๋ชจ๋“  ์ž‘์—… ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฉˆ์ถฐ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ๊ฐ€์šฉ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ ์€ ํ™˜๊ฒฝ์—์„œ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž์ฒด๊ฐ€ ์š”๊ตฌํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๊ฐ€์žฅ ์ ๋‹ค. 
  • ๋‹จ์ผ ์ฝ”์–ด ํ”„๋กœ์„ธ์„œ ๋˜๋Š” ์ฝ”์–ด ์ˆ˜๊ฐ€ ์ ์€ ํ™˜๊ฒฝ์ด๋ผ๋ฉด ์‹œ๋ฆฌ์–ผ ์ปฌ๋ ‰ํ„ฐ๋Š” ์Šค๋ ˆ๋“œ ์ƒํ˜ธ ์ž‘์šฉ์— ์˜ํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์—†๋‹ค.
  • ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์— ์ง‘์ค‘ํ•˜๋ฏ€๋กœ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํšŒ์ˆ˜ ํšจ์œจ์„ ์ตœ๋Œ€๋กœ ๋Œ์–ด๋‚ธ๋‹ค.
  • ์‹œ๋ฆฌ์–ผ ์ปฌ๋ ‰ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” -XX:+UserSerialGC ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค.

 

2. ํŒŒ๋‰ด ์ปฌ๋ ‰ํ„ฐ

  • ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์‹œ๋ฆฌ์–ผ ์ปฌ๋ ‰ํ„ฐ๋ฅผ ๋ณ‘๋ ฌํ™”ํ•œ ๋ฒ„์ „์ด๋‹ค.
  • ์Šค๋ ˆ๋“œ ํšŒ์ˆ˜์— ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋ฅผ ์ด์šฉํ•œ๋‹ค.
  • GC ์Šค๋ ˆ๋“œ์™€ ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋˜๋Š”๊ฒƒ์„ ์ตœ์ดˆ๋กœ ์‹คํ˜„ํ•ด ๋ƒˆ๋‹ค.
  • ํ•ซ์ŠคํŒŸ ๊ฐ€์ƒ ๋จธ์‹  ์—ญ์‚ฌ์—์„œ ์‚ฌ๋ผ์ง„ ์ตœ์ดˆ์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ
  • ๋‹จ์ผ ์ฝ”์–ด ํ”„๋กœ์„ธ์„œ์—์„œ๋Š” ์‹œ๋ฆฌ์–ผ ์ปฌ๋ ‰ํ„ฐ๋ณด๋‹ค ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง„๋‹ค.
  • ์Šค๋ ˆ๋“œ๋“ค์˜ ์ƒํ˜ธ ์ž‘์šฉ์— ๋”ฐ๋ฅธ ์˜ค๋ฒ ํ—ˆ๋“œ ์กด์žฌ
  • ์ฝ”์–ด์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉด ํŒŒ๋‰ด๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ํ•˜๋Š” ๋™์•ˆ์— ์‹œ์Šคํ…œ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์ปค์ง„๋‹ค.

 

3. ํŒจ๋Ÿฌ๋  ์Šค์บ๋นˆ์ง€ ์ปฌ๋ ‰ํ„ฐ

  • ์‹ ์„ธ๋Œ€์šฉ์ด๋ฉฐ, PS ์ปฌ๋ ‰ํ„ฐ๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค.
  • ๋งˆํฌ-์นดํ”ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๊ธฐ์ดˆํ•˜๋ฉฐ, ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋ฅผ ์ด์šฉํ•ด ํšŒ์ˆ˜ํ•œ๋‹ค.
  • ํ”„๋กœ์„ธ์„œ๊ฐ€ ์‚ฌ์šฉ์ž ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ์‹œ๊ฐ„๊ณผ ํ”„๋กœ์„ธ์„œ๊ฐ€ ์†Œ๋น„ํ•˜๋Š” ์ด์‹œ๊ฐ„์˜ ๋น„์œจ์„ ๋œปํ•˜๋Š” ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์ œ์–ดํ•˜๋Š” ๊ฒŒ ๋ชฉํ‘œ๋‹ค.
  • ์ฒ˜๋ฆฌ๋Ÿ‰์— ๊ด€์‹ฌ์ด ๋งŽ์•„ ์ฒ˜๋ฆฌ๋Ÿ‰ ์ปฌ๋ ‰ํ„ฐ๋ผ๊ณ ใ…— ๋ถ€๋ฅด๊ธฐ๋„ ํ•œ๋‹ค.
  •  -XX:MaxGCPauseMillis : ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์ •์ง€ ์‹œ๊ฐ„์˜ ์ตœ๋Œ“๊ฐ’์„ ์ง€์ •. ์ปฌ๋ ‰ํ„ฐ๋Š” ๋ฉ”๋ฌด๋ฆฌ ํšŒ์ˆ˜์— ์†Œ์šฉ๋˜๋Š” ์‹œ๊ฐ„์ด ์ด ์„ค์ •๊ฐ’์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค.
  •  -XX:GCTimeRatio: ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์ง์ ‘ ์ง€์ •. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ด ์‹คํ–‰ ์‹œ๊ฐ„์— ๋Œ€ํ•œ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์‹œ๊ฐ„์˜ ๋ฐฐ์œจ
  • -XX:+UserAdaptiveSizePolicy : ์‹ ์„ธ๋Œ€์˜ ํฌ๊ธฐ, ์—๋ด๊ณผ ์ƒ์กด์ž์˜ ๊ณต๊ฐ„ ๋น„์œจ, ๊ตฌ์„ธ๋Œ€๋กœ ์˜ฎ๊ฒจ๊ฐˆ ๊ฐ์ฒด์˜ ํฌ๊ธฐ ๋“ฑ. ์„ธ๋ถ€ ์„ค์ • ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ๊ฐ€์ƒ ๋จธ์‹ ์ด ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ ์ตœ์ ์˜ ์ •์ง€ ์‹œ๊ฐ„๊ณผ ์ตœ๋Œ€ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ชจ๋“  ๋งค๊ฐœ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋™์ ์œผ๋กœ ์กฐ์œจํ•ด ์ค€๋‹ค. GC ์ธ๊ฐ„ ๊ณตํ•™์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค.
  • ๊ฐ€์ƒ๋จธ์‹ ์ด ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ตœ์ ํ™”๋ฅผ ํ•ด์ฃผ๋ฏ€๋กœ ์ˆ˜๋™์œผ๋กœ ์ตœ์ ํ™”ํ•˜๊ธฐ ์–ด๋ ค์šด ์šด์˜์ž์—๊ฒŒ๋Š” ์ ์‘ํ˜• ์กฐ์œจ ์ „๋žต์„ ์ง€์›ํ•˜๋Š” PS ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ๊ดœ์ฐฎ์€ ์„ ํƒ์ง€์ด๋‹ค.
  • ์ ์‘ํ˜• ์กฐ์œจ ์ „๋žต์€ ํŒŒ๋‰ด ์ปฌ๋ ‰ํ„ฐ์™€ ์ฐจ๋ณ„ํ™”ํ•˜๋Š” ์ค‘์š”ํ•œ ํŠน์„ฑ์ด๋‹ค.

 

4. ์‹œ๋ฆฌ์–ผ ์˜ฌ๋“œ ์ปฌ๋ ‰ํ„ฐ

  • ์‹œ๋ฆฌ์–ผ ์ปฌ๋ ‰ํ„ฐ์˜ ๊ตฌ์„ธ๋Œ€์šฉ ๋ฒ„์ „
  • ๋‹จ์ผ ์Šค๋ ˆ๋“œ ์ปฌ๋ ‰ํ„ฐ, ๋งˆํฌ-์ปดํŒฉํŠธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ
  • ์ฃผ๋กœ ํด๋ผ์ด์–ธํŠธ์šฉ ํ•ซ์ŠคํŒŸ ๊ฐ€์ƒ ๋จธ์‹ ์—์„œ ์‚ฌ์šฉํ•œ๋‹ค.

 

5. ํŒจ๋Ÿฌ๋  ์˜ฌ๋“œ ์ปฌ๋ ‰ํ„ฐ

  • PS ์ปฌ๋ ‰ํ„ฐ์˜ ๊ตฌ์„ธ๋Œ€์šฉ ๋ฒ„์ „
  • ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋ฅผ ์ด์šฉํ•œ ๋ณ‘๋ ฌ ํšŒ์ˆ˜๋ฅผ ์ง€์›ํ•˜๋ฉฐ ๋งˆํฌ-์ปดํŒฉํŠธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๊ตฌํ˜„๋˜์—ˆ๋‹ค.
  • ๊ตฌ์„ธ๋Œ€ ์ปฌ๋ ‰ํ„ฐ๋“ค์˜ ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์€ ํฌ๊ณ  ํ•˜๋“œ์›จ์–ด๋Š” ์ข‹์ง€๋งŒ, ๋‹จ์ผ ์Šค๋ ˆ๋“œ๋กœ ๋™์ž‘ ํ•˜์—ฌ ์„œ๋ฒ„์šฉ ํ”„๋กœ์„ธ์„œ์˜ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ์—ญ๋Ÿ‰์„ ๋Œ์–ด๋‚ผ ์ˆ˜ ์—†์—ˆ๋‹ค.
  • ์ฒ˜๋ฆฌ๋Ÿ‰์ด ์ค‘์š”ํ•˜๊ฑฐ๋‚˜ ํ”„๋กœ์„ธ์„œ ์ž์›์ด ๋ถ€์กฑํ•œ ์ƒํ™ฉ์ด๋ผ๋ฉด ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์ค‘์‹œํ•˜๋Š” PS ์ปฌ๋ ‰ํ„ฐ์™€ ํŒจ๋Ÿฌ๋  ์˜ฌ๋“œ ์กฐํ•ฉ์ด ์ ํ•ฉํ•˜๋‹ค.
  • ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” XX:+UserParallelGC ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•œ๋‹ค.

 

6. CMS ์ปฌ๋ ‰ํ„ฐ

  • ํ‘œ์‹œ์™€ ์“ธ๊ธฐ ๋‹จ๊ณ„ ๋ชจ๋‘๋ฅผ ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ์™€ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • CMS ์ปฌ๋ ‰ํ„ฐ์˜ ๋ชฉ์ ์€ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์— ๋”ฐ๋ฅธ ์ผ์‹œ ์ •์ง€ ์‹œ๊ฐ„์„ ์ตœ์†Œ๋กœ ์ค„์ด๋Š” ๊ฒƒ์ด๋‹ค.
  • ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฃผ๋ ฅ ๋ถ„์•ผ๋Š” ์ธํ„ฐ๋„ท ์„œ๋น„์Šค์˜ ๋ฐฑ์—”๋“œ์™€ ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ฐ˜์˜ ๋ธŒ๋ผ์šฐ์ €-์„œ๋ฒ„ ์‹œ์Šคํ…œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋น„์Šค ์‘๋‹ต ์‹œ๊ฐ„์ด ์ค‘์š”ํ•˜๋ฏ€๋กœ ์‹œ์Šคํ…œ์˜ ์ผ์‹œ ์ •์ง€ ์‹œ๊ฐ„์ด ์งง์•„์•ผ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋” ๋‚˜์€ ๊ฒฝํ—˜์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค. 
  • ๋งˆํฌ-์Šค์œ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ธฐ์ดˆ๋กœ ๊ตฌํ˜„๋˜์—ˆ์œผ๋ฉฐ, ๊ธฐ์กด ์ปฌ๋ ‰ํ„ฐ๋“ค๋ณด๋‹ค ํ›จ์”ฌ ๋ณต์žกํ•˜๊ฒŒ ๋™์ž‘ํ•œ๋‹ค.
  • ์ „์ฒด ๊ณผ์ •์€ ์ตœ์ดˆ ํ‘œ์‹œ - ๋™์‹œ ํ‘œ์‹œ - ์žฌํ‘œ์‹œ - ๋™์‹œ ์“ธ๊ธฐ ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.
  • "์ตœ์ดˆ ํ‘œ์‹œ"์™€ "์žฌํ‘œ์‹œ" ๋‹จ๊ณ„๋Š” '์Šคํ†ฑ ๋” ์›”๋“œ' ๋ฐฉ์‹์ด๋‹ค.
  • ์ตœ์ดˆ ํ‘œ์‹œ ๋‹จ๊ณ„์—์„œ๋Š” GC ๋ฃจํŠธ์™€ ์ง์ ‘ ์—ฐ๊ฒฐ๋œ ๊ฐ์ฒด๋“ค๋งŒ ํ‘œ์‹œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•„์ฃผ ๋น ๋ฅด๊ฒŒ ๋๋‚œ๋‹ค. 
  • ๋™์‹œ ํ‘œ์‹œ ๋‹จ๊ณ„์—์„œ๋Š” GC ๋ฃจํŠธ์™€ ์ง์ ‘ ์—ฐ๊ฒฐ๋œ ๊ฐ์ฒด๋“ค๋กœ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„ ์ „์ฒด๋ฅผ ํƒ์ƒ‰ํ•œ๋‹ค. ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ์ง€๋งŒ ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ๋ฅผ ๋ฉˆ์ถ”์ง€ ์•Š๊ณ  GC ์Šค๋ ˆ๋“œ์™€ ๋™์‹œ์— ์‹คํ–‰๋œ๋‹ค.
  • ์žฌํ‘œ์‹œ ๋‹จ๊ณ„์—์„œ๋Š” ๋™์‹œ ํ‘œ์‹œ ๋„์ค‘ ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ๊ฐ€ ์ฐธ์กฐ ๊ด€๊ณ„๋ฅผ ๋ณ€๊ฒฝํ•œ ๊ฐ์ฒด๋“ค์„ ๋ฐ”๋กœ์žก๋Š”๋‹ค. ์ด ๋‹จ๊ณ„์˜ ์ผ์‹œ ์ •์ง€ ์‹œ๊ฐ„์€ ๋ณดํ†ต ์ตœ์ดˆ ํ‘œ์‹œ ๋‹จ๊ณ„๋ณด๋‹ค ์‚ด์ง ๊ธธ๋ฉฐ, ๋™์‹œ ํ‘œ์‹œ ๋‹จ๊ณ„๋ณด๋‹ค๋Š” ํ›จ์”ฌ ์งง๋‹ค.
  • ๋™์‹œ ์“ธ๊ธฐ ๋‹จ๊ณ„์—์„œ๋Š” ์ฃฝ์€ ๊ฐ์ฒด๋“ค์„ ์“ธ์–ด ๋‹ด์œผ๋ฉฐ, ์ด ๋‹จ๊ณ„ ์—ญ์‹œ ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ๋ฅผ ๋ฉˆ์ถ”์ง€ ์•Š๊ณ  ๋™์‹œ์— ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • ์ค‘์š”ํ•œ ํŠน์„ฑ์€ ์ „์ฒด ๊ณผ์ • ์ค‘ ๊ฐ€์žฅ ๊ธด ๋™์‹œ ํ‘œ์‹œ์™€ ๋™์‹œ ์“ธ๊ธฐ ๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ๋ฅผ ๋ฉˆ์ถ”์ง€ ์•Š๋Š”๋‹ค.
  • CMS ์ปฌ๋ ‰ํ„ฐ์˜ ์ฃผ์š” ์žฅ์ ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์Šค๋ ˆ๋“œ์™€ ๋ณ‘๋ ฌ๋กœ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ •์ง€ ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • CMS ์ปฌ๋ ‰ํ„ฐ์˜ ์ฒซ๋ฒˆ์งธ ๋‹จ์ ์€ ํ”„๋กœ์„ธ์„œ ์ž์›์— ๋ฏผ๊ฐํ•˜๋‹ค๋Š” ์ ์ด๋‹ค. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ์ˆ˜ํ–‰ํ•˜๋Š” GC ์Šค๋ ˆ๋“œ๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ํ”„๋กœ์„ธ์„œ ์„ฑ๋Šฅ์„ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, CPU ์‚ฌ์šฉ๋Ÿ‰์ด ๋†’์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ํŠนํžˆ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ณธ๋ž˜ ๋งŽ์€ ํ”„๋กœ์„ธ์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ, GC๊ฐ€ ์ƒ๋‹นํ•œ CPU๋ฅผ ์ ์œ ํ•˜๋ฉด์„œ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์†๋„๊ฐ€ ๋ˆˆ์— ๋„๊ฒŒ ๋А๋ ค์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • CMS์˜ ๋˜ ๋‹ค๋ฅธ ๋‹จ์ ์€ ๋ถ€์œ  ์“ฐ๋ ˆ๊ธฐ(Floating Garbage)๋ฅผ ํšŒ์ˆ˜ํ•˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ์ ์ด๋‹ค. CMS์˜ ๋™์‹œ ๋งˆํ‚น ๋ฐ ๋™์‹œ ์Šค์œ„ํ•‘ ๋‹จ๊ณ„์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์Šค๋ ˆ๋“œ๋Š” ๊ณ„์† ์‹คํ–‰๋˜๋ฏ€๋กœ, ์ด ๊ณผ์ •์—์„œ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ผ๋ถ€ ๊ฐ์ฒด๋Š” ๋งˆํ‚น์ด ๋๋‚œ ํ›„์— ๊ฐ€๋น„์ง€๊ฐ€ ๋˜์–ด๋„, ํ•ด๋‹น GC ์‚ฌ์ดํด์—์„œ๋Š” ํšŒ์ˆ˜๋˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐ์ฒด๋“ค์„ ๋ถ€์œ  ์“ฐ๋ ˆ๊ธฐ๋ผ๊ณ  ํ•˜๋ฉฐ, ๊ฒฐ๊ตญ ๋‹ค์Œ GC ์‚ฌ์ดํด๊นŒ์ง€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋กœ ์ธํ•ด ๋™์‹œ ๋ชจ๋“œ ์‹คํŒจ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค. ์ฆ‰, CMS๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ถฉ๋ถ„ํžˆ ํ™•๋ณดํ•˜์ง€ ๋ชปํ•˜๋ฉด ๊ฒฐ๊ตญ Stop-the-World ๋ฐฉ์‹์˜ ์ „์ฒด GC๊ฐ€ ๊ฐ•์ œ๋กœ ์‹คํ–‰๋˜๋ฉด์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‘๋‹ต ์‹œ๊ฐ„์ด ํฌ๊ฒŒ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ, CMS๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๋™์•ˆ์—๋„ ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ๊ฐ€ ์›ํ™œํžˆ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ์ถฉ๋ถ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.
  • CMS์˜ ๋˜ ๋‹ค๋ฅธ ๋‹จ์ ์€ ๋ฉ”๋ชจ๋ฆฌ ํŒŒํŽธํ™” ๋ฌธ์ œ์ด๋‹ค. CMS๋Š” ๋งˆํฌ-์Šค์œ•(Mark-Sweep) ๋ฐฉ์‹์œผ๋กœ ๊ฐ€๋น„์ง€๋ฅผ ์ •๋ฆฌํ•˜๋Š”๋ฐ, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์••์ถ•ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํŒŒํŽธํ™”๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ํŒŒํŽธํ™”๊ฐ€ ์‹ฌํ•ด์ง€๋ฉด ํฐ ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•  ๋•Œ ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ฐพ์ง€ ๋ชปํ•ด ํ• ๋‹น์ด ์‹คํŒจํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๊ฒฐ๊ตญ ์ „์ฒด GC(Full GC)๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ •๋ฆฌํ•ด์•ผ ํ•œ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด CMS๋Š” -XX:+UseCMSCompactAtFullCollection ์˜ต์…˜์„ ์ œ๊ณตํ•œ๋‹ค. ์ด ์˜ต์…˜์„ ํ™œ์„ฑํ™”ํ•˜๋ฉด CMS๊ฐ€ Full GC๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ์กฐ๊ฐ ๋ชจ์Œ(Compaction)๋„ ํ•จ๊ป˜ ์‹คํ–‰ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๊ณผ์ •์—์„œ ์‚ด์•„์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์ด๋™ํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ์™€ ๋™์‹œ์— ์‹คํ–‰ํ•  ์ˆ˜ ์—†๊ณ  ์ •์ง€ ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด JVM์€ -XX:CMSFullGCsBeforeCompaction ์˜ต์…˜์„ ์ œ๊ณตํ•œ๋‹ค. ์ด ์˜ต์…˜์€ ์ง€์ •๋œ ํšŸ์ˆ˜๋งŒํผ Full GC๋ฅผ ์ˆ˜ํ–‰ํ•œ ํ›„์—๋งŒ ์กฐ๊ฐ ๋ชจ์Œ์„ ์‹คํ–‰ํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ๋ชจ๋“  Full GC์—์„œ ์กฐ๊ฐ ๋ชจ์Œ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ผ์ • ํšŸ์ˆ˜ ํ›„์—๋งŒ ์‹คํ–‰ํ•จ์œผ๋กœ์จ ์ •์ง€ ์‹œ๊ฐ„์„ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ ๊ฒƒ์ด๋‹ค.
์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์›น ์„œ๋น„์Šค์˜ ๋ฐฑ์—”๋“œ(์„œ๋ฒ„ ์ธก ๋กœ์ง) ์™€ ๋ธŒ๋ผ์šฐ์ €-์„œ๋ฒ„ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ์— ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์š”์†Œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์„œ๋น„์Šค ์‘๋‹ต ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ์„œ๋น„์Šค ์‘๋‹ต ์‹œ๊ฐ„์ด๋ž€ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญ์„ ๋ณด๋‚ธ ํ›„ ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต์„ ์ฃผ๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์‘๋‹ต ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๋ฉด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX)์ด ๋‚˜๋น ์ง€๊ณ , ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋А๋ ค์ง€๊ฑฐ๋‚˜ ์„œ๋น„์Šค๊ฐ€ ๋Š๊ธฐ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์‹œ์Šคํ…œ์˜ "์ผ์‹œ ์ •์ง€ ์‹œ๊ฐ„"์ด ์ค‘์š”ํ•œ ์ด์œ ๋Š” ์ž๋ฐ”๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ GC๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ผ๋ถ€ ๋˜๋Š” ์ „์ฒด๊ฐ€ ์ผ์‹œ์ ์œผ๋กœ ๋ฉˆ์ถ”๋Š” "Stop-the-world" ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ผ์‹œ ์ •์ง€ ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๋ฉด, ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ์ฆ‰์‹œ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋Œ€๊ธฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉ์ž๋Š” ์„œ๋น„์Šค๊ฐ€ ๋А๋ ค์กŒ๋‹ค๊ณ  ๋А๋ผ๊ฑฐ๋‚˜, ์‹ฌํ•œ ๊ฒฝ์šฐ ์„œ๋น„์Šค๊ฐ€ ๋ฉˆ์ถ˜ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ์‹œ ์ •์ง€ ์‹œ๊ฐ„์„ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•
- GC ํŠœ๋‹
   - ์ตœ์‹ GC ์•Œ๊ณ ๋ฆฌ์ฆ˜(์˜ˆ: G1GC, ZGC, Shenandoah GC) ํ™œ์šฉ
   - JVM ์˜ต์…˜ ์กฐ์ • (-XX:MaxGCPauseMillis ์„ค์ • ๋“ฑ)

- ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ตœ์ ํ™”
   - ๋ถˆํ•„์š”ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ์„ ์ค„์ด๊ณ , ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๋ฐฉ์ง€
   - ๊ฐ์ฒด ํ’€(Object Pool) ํ™œ์šฉ

- ๋น„๋™๊ธฐ ๋ฐ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ์ตœ์ ํ™”
   - ์š”์ฒญ์„ ๋น„๋™๊ธฐ(Async) ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ
   - ์ ์ ˆํ•œ ์Šค๋ ˆ๋“œ ํ’€(Thread Pool) ์„ค์ •

์ฆ‰, "์‹œ์Šคํ…œ์˜ ์ผ์‹œ ์ •์ง€ ์‹œ๊ฐ„์ด ์งง์•„์•ผ ํ•œ๋‹ค"๋Š” ๋ง์€ GC๋กœ ์ธํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฉˆ์ถ”๋Š” ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•˜์—ฌ, ์„œ๋ฒ„๊ฐ€ ํ•ญ์ƒ ๋น ๋ฅด๊ฒŒ ์‘๋‹ตํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

 

 

7. G1 ์ปฌ๋ ‰์ฒ˜(๊ฐ€๋น„์ง€ ์šฐ์„  ์ปฌ๋ ‰ํ„ฐ)

  • Garbage First(๊ฐ€๋น„์ง€ ์šฐ์„ )์„ ์งง๊ฒŒ ์ค„์ธ ํ‘œํ˜„์ด๋‹ค.
  • ์ฃผ๋กœ ์„œ๋ฒ„์šฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ง‘์ค‘ํ•œ ์ปฌ๋ ‰ํ„ฐ๋‹ค.
  • ํž™ ๋ฉ”๋ชจ๋ฆฌ์˜ ์–ด๋А๊ณณ์ด๋“  ํšŒ์ˆ˜ ๋Œ€์ƒ์— ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ํšŒ์ˆ˜ ์ง‘ํ•ฉ์ด๋ผ ํ•˜๋ฉฐ ์งง๊ฒŒ CSet๋ผ๊ณ  ํ•œ๋‹ค. '์–ด๋А ์˜์—ญ์— ์“ฐ๋ ˆ๊ธฐ๊ฐ€ ๊ฐ€์žฅ ๋งŽ์œผ๋ƒ'์™€ 'ํšŒ์ˆ˜ํ–ˆ์„ ๋•Œ ์ด๋“์ด ์–ด๋””๊ฐ€ ๊ฐ€์žฅ ํฌ๋ƒ'๊ฐ€ ํšŒ์ˆ˜ ์˜์—ญ์„ ๊ณ ๋ฅด๋Š” ๊ธฐ์ค€์ด ๋œ๋‹ค. ์ด๊ฒƒ์ด G1์˜ ํ˜ผํ•ฉ GC ๋ชจ๋“œ๋‹ค.
  • G1์€ ์ž๋ฐ” ํž™์„ ๋™์ผ ํฌ๊ธฐ์˜ ์—ฌ๋Ÿฌ ๋…๋ฆฝ ๋ฆฌ์ „(๋ธ”๋ก)์œผ๋กœ ๋‚˜๋ˆ , ๋ฆฌ์ „ ๊ฐ๊ฐ์— ์—ญํ• ๋ณ„ ์ „๋žต์„ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ ์šฉํ•  ์ˆ˜ ์žˆ์–ด์„œ ํšŒ์ˆ˜ ํšจ์œจ์„ ๊ทน๋Œ€ํ™”ํ•œ๋‹ค.
  • ํฐ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฑฐ๋Œ€๋ฆฌ์ „(humongous region)์ด๋ผ๋Š” ํŠน๋ณ„ํ•œ ์œ ํ˜•์„ ํ™œ์šฉํ•œ๋‹ค. G1์€ ๋ฆฌ์ „ ์šฉ๋Ÿ‰์˜ ์ ˆ๋ฐ˜๋ณด๋‹ค ํฐ ๊ฐ์ฒด๋ฅผ ํฐ ๊ฐ์ฒด๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค. ๋ฆฌ์ „ ํ•˜๋‚˜์˜ ํฌ๊ธฐ๋Š” -XX:G1HeapRegionSize ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์„ค์ •ํ•œ๋‹ค.

 G1 GC์˜ ํšŒ์ˆ˜ ํšจ์œจ ๊ทน๋Œ€ํ™” ์›๋ฆฌ

  1. ๊ฐ€๋น„์ง€๊ฐ€ ๋งŽ์€ ๋ฆฌ์ „๋ถ€ํ„ฐ ์šฐ์„  ํšŒ์ˆ˜(Garbage First)
    • ๊ธฐ์กด์˜ GC๋Š” ์ „์ฒด Young ๋˜๋Š” ์ „์ฒด Old ์˜์—ญ์„ ๋Œ€์ƒ์œผ๋กœ GC๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ,
    • G1์€ ํšŒ์ˆ˜ํ•  ๊ฐ€์น˜๊ฐ€ ๋†’์€ ๋ฆฌ์ „๋ถ€ํ„ฐ ์„ ํƒ์ ์œผ๋กœ GC๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ตœ์†Œํ•œ์˜ ๋น„์šฉ์œผ๋กœ ์ตœ๋Œ€ํ•œ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšŒ์ˆ˜ํ•œ๋‹ค.
  2. ๋ฆฌ์ „๋ณ„ ๋…๋ฆฝ์ ์ธ GC ์ ์šฉ
    • ๊ฐ ๋ฆฌ์ „์˜ ์—ญํ• ๊ณผ ์ƒํƒœ์— ๋”ฐ๋ผ ์ตœ์ ์˜ GC ์ „๋žต์„ ์ ์šฉํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ์ •์ง€ ์‹œ๊ฐ„์„ ์ค„์ธ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, Young GC๋Š” Young ๋ฆฌ์ „์—์„œ๋งŒ ์ˆ˜ํ–‰๋˜๊ณ , Mixed GC๋Š” Young + Old ๋ฆฌ์ „์„ ๋Œ€์ƒ์œผ๋กœ ์ˆ˜ํ–‰๋œ๋‹ค.
  3. ์—ฐ์†์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ํ™•๋ณด(Compact) ๊ธฐ๋Šฅ ํฌํ•จ
    • CMS์™€ ๋‹ฌ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ํŒŒํŽธํ™”๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ์ฒด๋ฅผ ์ด๋™ํ•˜์—ฌ ์—ฐ์†์ ์ธ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๋Š” Compact ๊ธฐ๋Šฅ์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.
    • ๋”ฐ๋ผ์„œ ํฐ ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

G1 GC๋Š” ํž™์„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฆฌ์ „์œผ๋กœ ๋‚˜๋ˆ„๊ณ , ๊ฐ ๋ฆฌ์ „์— ์—ญํ• ์„ ๋™์ ์œผ๋กœ ํ• ๋‹นํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ GC ์ž‘์—…์„ ์ค„์ด๊ณ , ๊ฐ€์žฅ ํšจ๊ณผ์ ์œผ๋กœ ํšŒ์ˆ˜ํ•  ์ˆ˜ ์žˆ๋Š” ์˜์—ญ์„ ์šฐ์„ ์ ์œผ๋กœ ์ •๋ฆฌํ•˜์—ฌ GC ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

 

8. ์˜ค๋Š˜๋‚ ์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋“ค

  • ์‹ ์„ธ๋Œ€์šฉ๊ณผ ๊ตฌ์„ธ๋Œ€์šฉ ๊ตฌ๋ถ„์ด ์‚ฌ๋ผ์กŒ๋‹ค.

์ €์ง€์—ฐ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ

  • ํ•ซ์ŠคํŒŸ์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋Š” ์‹œ๋ฆฌ์–ผ -> CMS -> G1์œผ๋กœ ์ง„ํ™”ํ–ˆ๋‹ค.
  • ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋ฅผ ์ธก์ •ํ•˜๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ง€ํ‘œ๋Š” ์ฒ˜๋ฆฌ๋Ÿ‰, ์ง€์—ฐ์‹œ๊ฐ„, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด๋‹ค. 
  • ํ•˜๋“œ์›จ์–ด ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜๋ฉด์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์กฐ๊ธˆ ๋” ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ํฐ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค. ๋˜ํ•œ ์„ฑ๋Šฅ์ด ์ข‹์€ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์ค„์—ฌ ์ „์ฒด ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค. ํ•˜์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋Š˜๋ฆฌ๋ฉด ์ง€์—ฐ ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๊ณ  ์„ฑ๋Šฅ์— ๋ฏธ๋ฌ˜ํ•œ ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์„ฑ๋Šฅ ์ง€ํ‘œ๋Š” ์ง€์—ฐ ์‹œ๊ฐ„์ด๋‹ค.
  • ์…ฐ๋…„๋„์–ด์™€ ZGG ์ปฌ๋ ‰ํ„ฐ๋Š” ์ตœ์ดˆ ํ‘œ์‹œ์™€ ์ตœ์ข… ํ‘œ์‹œ์—์„œ๋งŒ ์ผ์‹œ ์ •์ง€๊ฐ€ ์งง๊ฒŒ ์ผ์–ด๋‚˜๋ฉฐ, ์ผ์‹œ ์ •์ง€ ์‹œ๊ฐ„์€ ๊ฑฐ์˜ ๊ณ ์ •์ ์ด๋‹ค. ์ฆ‰, ํž™ ํฌ๊ธฐ์™€ ํž™ ์•ˆ์˜ ๊ฐ์ฒด ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚œ๋‹ค๊ณ  ํ•ด์„œ ๋” ๊ธธ์–ด ์ง€์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋ž˜์„œ ์ด ๋‘ ์ปฌ๋ ‰ํ„ฐ๋ฅผ '์ €์ง€์—ฐ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ'๋ผ๊ณ  ํ•œ๋‹ค.

 

1. ์…ฐ๋…„๋„์–ด

  • ์˜ค๋ผํด ๊ฐ€์ƒ ๋จธ์‹  ๊ฐœ๋ฐœํŒ€์ด ์ฃผ๋„ํ•˜์ง€ ์•Š์€ ์ฒซ๋ฒˆ์งธ ํ•ซ์ŠคํŒŸ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋ผ์„œ ์˜ค๋ผํด JDK์—๋Š” ์—†๊ณ  ๋‹ค๋ฅธ ํšŒ์‚ฌ OpenJDK์—๋งŒ ์กด์žฌํ•˜๋Š” ์ปฌ๋ ‰ํ„ฐ๋‹ค.
  • ํž™์„ ๋ฆฌ์ „๋“ค๋กœ ์ชผ๊ฐœ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, ํฐ ๊ฐ์ฒด ์ „์šฉ์˜ ๊ฑฐ๋Œ€ ๋ฆฌ์ „์„ ์ง€์›ํ•˜๊ณ , ๊ธฐ๋ณธ์ ์œผ๋กœ ํšŒ์ˆ˜๊ฐ€์น˜๊ฐ€ ํฐ ๋ฆฌ์ „์„ ๋จผ์ € ํšŒ์ˆ˜ํ•œ๋‹ค. 
  • ์…ฐ๋…„๋„์–ด์˜ ๋ชฉํ‘œ๋Š” ํž™ ํฌ๊ธฐ์™€ ์ƒ๊ด€์—†์ด ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์œผ๋กœ ์ธํ•œ ์ผ์‹œ์ •์ง€๋ฅผ 10๋ฐ€๋ฆฌ ์ดˆ ์ด๋‚ด๋กœ ๋ฌถ์–ด๋‘๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.
  • G1 ์ปฌ๋ ‰ํ„ฐ๋Š” ์…ฐ๋…„๋„์–ด์˜ ์ฝ”๋“œ๋ฅผ ๋ฐ˜์˜ํ•˜์—ฌ ๋™์‹œ ์‹คํŒจ์˜ ํƒˆ์ถœ๊ตฌ์ธ ์ „์ฒด GC๋ฅผ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

 

์…ฐ๋…„๋„์–ด์˜ ๊ฐœ์„ ์‚ฌํ•ญ

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

 

๋™์ž‘๋ฐฉ์‹

  1. ์ตœ์ดˆ ํ‘œ์‹œ
    1. ๊ฐ€์žฅ ๋จผ์ € GC ๋ฃจํŠธ์—์„œ ์ง์ ‘ ์ฐธ์กฐํ•˜๋Š” ๊ฐ์ฒด๋“ค์— ํ‘œ์‹œํ•œ๋‹ค.
    2. ์ด ๊ณผ์ •์€ "Stop-The-World" ์ƒํƒœ์—์„œ ์‹คํ–‰๋˜๋ฉฐ, ๋น ๋ฅด๊ฒŒ ์™„๋ฃŒ๋œ๋‹ค.
  2. ๋™์‹œ ํ‘œ์‹œ
    1. ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„๋ฅผ ํƒ€๊ณ  ํž™์„ ํƒ์ƒ‰ํ•˜๋ฉฐ ๋„๋‹ฌ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ํ‘œ์‹œํ•œ๋‹ค.
    2. ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ์™€ ๋™์‹œ์— ์ˆ˜ํ–‰๋œ๋‹ค.
    3. ์ˆ˜ํ–‰ ์‹œ๊ฐ€์€ ์‚ด์•„์žˆ๋Š” ๊ฐ์ฒด ์ˆ˜์™€ ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„์˜ ๋ณต์žก๋„์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค.
    4. ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ๊ฐ€ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํž™ ์‚ฌ์šฉ๋Ÿ‰์ด ๋Š˜์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค.
  3. ์ตœ์ข… ํ‘œ์‹œ
    1. ๋ณด๋ฅ˜ ์ค‘์ธ ๋ชจ๋“  ํ‘œ์‹œ๋ฅผ ์™„๋ฃŒํ•˜๊ณ  GC ๋ฃจํŠธ ์ง‘ํ•ฉ์„ ๋‹ค์‹œ ์Šค์บ”ํ•œ๋‹ค.
    2. ํšŒ์ˆ˜๊ฐ€์น˜๊ฐ€ ๊ฐ€์žฅ ํฐ ๋ฆฌ์ „๋“ค์„ ์ถ”๋ ค ํšŒ์ˆ˜ ์ง‘ํ•ฉ์„ ์ƒ์„ฑํ•œ๋‹ค.
    3. ์ด ๋‹จ๊ณ„๋„ ์งง์ง€๋งŒ ์ผ์‹œ ์ •์ง€๋œ๋‹ค.
  4. ๋™์‹œ ์ฒญ์†Œ
    1. ์‚ด์•„ ์žˆ๋Š” ๊ฐ์ฒด๊ฐ€ ํ•˜๋‚˜๋„ ์—†๋Š” ๋ฆฌ์ „๋“ค์„ ์ฒญ์†Œํ•œ๋‹ค.
  5. ๋™์‹œ ์ด์ฃผ
    1. ๋‹ค๋ฅธ ํ•ซ์ŠคํŒŸ์˜ ์ปฌ๋ ‰ํ„ฐ๋“ค๊ณผ ๊ตฌ๋ถ„๋˜๋Š” ํ•ต์‹ฌ ์ฐจ์ด
    2. ํšŒ์ˆ˜ ์ง‘ํ•ฉ ์•ˆ์— ์‚ด์•„ ์žˆ๋Š” ๊ฐ์ฒด๋“ค์„ ๋‹ค๋ฅธ ๋นˆ ๋ฆฌ์ „์œผ๋กœ ๋ณต์‚ฌํ•œ ํ›„, ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋˜ ์ฐธ์กฐ ๋ชจ๋‘๊ฐ€ ์—ฌ์ „ํžˆ ์ด๋™ ์ „ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ฝ๊ธฐ ์žฅ๋ฒฝ๊ณผ ํฌ์›Œ๋”ฉ ํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•œ๋‹ค. 
    3. ์‹คํ–‰ ์‹œ๊ฐ„์€ ํšŒ์ˆ˜ ์ง‘ํ•ฉ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค.
  6. ์ตœ์ดˆ ์ฐธ์กฐ ๊ฐฑ์‹ 
    1. ์ฐธ์กฐ ๊ฐฑ์‹  : ๊ฐ์ฒด ์ด๋™์— ๋”ฐ๋ฅธ ์ฐธ์กฐ๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค. ๋™์‹œ ์ด์ฃผ ๋‹จ๊ณ„์—์„œ ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•œ ๋‹ค์Œ, ํž™์—์„œ ์˜› ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ชจ๋“  ์ฐธ์กฐ๋ฅผ ๋ณต์‚ฌ ํ›„์˜ ์ƒˆ๋กœ์šด ์ฃผ์†Œ๋กœ ์ˆ˜์ •ํ•œ๋‹ค.
    2. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ณ„์† ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ํž™ ๋‚ด์˜ ์ฐธ์กฐ๋ฅผ ์ตœ์‹  ์ƒํƒœ๋กœ ์—…๋ฐ์ดํŠธํ•œ๋‹ค
  7. ๋™์‹œ ์ฐธ์กฐ ๊ฐฑ์‹ 
    1. ์ฐธ์กฐ ๊ฐฑ์‹ ์„ ์‹œ์ž‘ํ•˜๋ฉฐ ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ์™€ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•œ๋‹ค.
    2. ์ˆ˜ํ–‰ ์‹œ๊ฐ„์€ ๋ฉ”๋ชจ๋ฆฌ์— ์กด์žฌํ•˜๋Š” ์ฐธ์กฐ์˜ ์ˆ˜์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค.
    3. ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์˜ ์ˆœ์„œ๋Œ€๋กœ ์ฐธ์กฐ ํƒ€์ž…์„ ์„ ํ˜• ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ด์ „ ๊ฐ’์„ ์ƒˆ๋กœ์šด ๊ฐ’์œผ๋กœ ์ˆ˜์ •ํ•œ๋‹ค.
  8. ์ตœ์ข… ์ฐธ์กฐ ๊ฐฑ์‹ 
    1. ํž™์˜ ์ฐธ์กฐ๋ฅผ ๋‹ค ๊ฐฑ์‹ ํ•œ ํ›„, GC ๋ฃจํŠธ ์ง‘ํ•ฉ์˜ ์ฐธ์กฐ๋„ ๊ฐฑ์‹ ํ•œ๋‹ค.
    2. ์…ฐ๋…„๋„์–ด์˜ ๋งˆ์ง€๋ง‰ ์ผ์‹œ ์ •์ง€ ๋‹จ๊ณ„๋‹ค.
    3. ์ •์ง€ ์‹œ๊ฐ„์€ GC ๋ฃจํŠธ์˜ ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค.
  9. ๋™์‹œ ์ฒญ์†Œ
    1. ์ด์ฃผ์™€ ์ฐธ์กฐ ๊ฐฑ์‹ ์ด ๋๋‚˜๋ฉด ํšŒ์ˆ˜ ์ง‘ํ•ฉ์˜ ๋ชจ๋“  ๋ฆฌ์ „์—๋Š” ์‚ด์•„ ์žˆ๋Š” ๊ฐ์ฒด๊ฐ€ ๋” ์ด์ƒ ๋‚จ์ง€ ์•Š๋Š”๋‹ค.
    2. ๊ทธ๋ž˜์„œ ๋™์‹œ ์ฒญ์†Œ๋ฅผ ๋‹ค์‹œ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•  ๊ณต๊ฐ„์„ ํ™•๋ณดํ•œ๋‹ค.

์…ฐ๋…„๋„์–ด์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋‹จ๊ณ„๋Š” ๋™์‹œ ํ‘œ์‹œ, ๋™์‹œ ์ด์ฃผ, ๋™์‹œ ์ฐธ์กฐ ๊ฐฑ์‹ ์ด๋‹ค. 

 

ํฌ์›Œ๋”ฉ ํฌ์ธํ„ฐ

  • ์…ฐ๋…„๋„์–ด๊ฐ€ ์ด์ฃผ๋ฅผ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํ•ต์‹ฌ ๊ฐœ๋…์ด๋‹ค.
  • ๊ฐ์ฒด ์ด๋™๊ณผ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ๊ฐ์ฒด ์ด๋™ ์‹œ ์›๋ž˜ ์œ„์น˜์—์„œ ์ƒˆ๋กœ์šด ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์—ญํ• ์„ ํ•˜๋Š” ํฌ์ธํ„ฐ์ด๋‹ค. ์ฃผ๋กœ ์••์ถ•(Compaction) ๋˜๋Š” ๋ณต์‚ฌ(Copying) ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๊ณผ์ •์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.

 

ํฌ์›Œ๋”ฉ ํฌ์ธํ„ฐ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์ค‘ ์ผ๋ถ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜(์˜ˆ: Shenandoah GC, G1 GC, Copying GC)์—์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋‹จํŽธํ™”(Fragmentation) ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ์ฒด๋ฅผ ์ด๋™ํ•œ๋‹ค.
์ด ๊ณผ์ •์—์„œ ๊ธฐ์กด ๊ฐ์ฒด์˜ ์ฐธ์กฐ๋ฅผ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๋ ค๋ฉด ๊ฐ์ฒด๊ฐ€ ์ด๋™๋œ ํ›„์—๋„ ๊ธฐ์กด ์ฐธ์กฐ๋“ค์ด ์ƒˆ ์œ„์น˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค.

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํฌ์›Œ๋”ฉ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

ํฌ์›Œ๋”ฉ ํฌ์ธํ„ฐ์˜ ๋™์ž‘ ๋ฐฉ์‹

  1. ๊ฐ์ฒด ์ด๋™ ์ „
    1. ๊ฐ์ฒด๊ฐ€ ํž™ ๋ฉ”๋ชจ๋ฆฌ์˜ ํ•œ ์œ„์น˜(์˜ˆ: ์ฃผ์†Œ A)์— ์กด์žฌํ•˜๊ณ , ์—ฌ๋Ÿฌ ์ฐธ์กฐ๊ฐ€ ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.
  2. ๊ฐ์ฒด ์ด๋™ ๊ณผ์ •
    1. GC๊ฐ€ ๊ฐ์ฒด๋ฅผ ์ƒˆ๋กœ์šด ์œ„์น˜(์˜ˆ: ์ฃผ์†Œ B)๋กœ ์ด๋™ํ•œ๋‹ค.
    2. ์›๋ž˜ ๊ฐ์ฒด๊ฐ€ ์žˆ๋˜ ์ž๋ฆฌ(์ฃผ์†Œ A)์— ํฌ์›Œ๋”ฉ ํฌ์ธํ„ฐ๋ฅผ ์ €์žฅํ•˜์—ฌ ์ฃผ์†Œ B๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ์„ค์ •ํ•œ๋‹ค.
  3. ์ฐธ์กฐ ์—…๋ฐ์ดํŠธ ๊ณผ์ •
    1. ์ดํ›„, ๋‹ค๋ฅธ ๊ฐ์ฒด๋‚˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์ฃผ์†Œ A์— ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๋ ค๊ณ  ํ•˜๋ฉด, ํฌ์›Œ๋”ฉ ํฌ์ธํ„ฐ๋ฅผ ๋”ฐ๋ผ ์ƒˆ ์ฃผ์†Œ B๋กœ ์ด๋™ํ•œ๋‹ค.
    2. GC๋Š” ๋ชจ๋“  ์ฐธ์กฐ๋ฅผ ์ƒˆ๋กœ์šด ์œ„์น˜(B)๋กœ ์—…๋ฐ์ดํŠธํ•œ ํ›„, ํฌ์›Œ๋”ฉ ํฌ์ธํ„ฐ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.

 

ํฌ์›Œ๋”ฉ ํฌ์ธํ„ฐ์˜ ์žฅ์ 

  • ๊ฐ์ฒด ์ฐธ์กฐ ์œ ์ง€ → ๊ธฐ์กด ์ฐธ์กฐ๊ฐ€ ๊นจ์ง€์ง€ ์•Š๊ณ  ์ƒˆ ์œ„์น˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ ๋‹จํŽธํ™” ํ•ด๊ฒฐ → ๊ฐ์ฒด๋ฅผ ์••์ถ•ํ•˜๋ฉด์„œ๋„ ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ค‘๋‹จ ์ตœ์†Œํ™” → ์ผ๋ถ€ GC ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฐ์ฒด๋ฅผ ์ด๋™ํ•˜๋ฉด์„œ๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.

๋‹จ์  ๋ฐ ์ฃผ์˜

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

 

2. ZGC

  • ์˜ค๋ผํด์ด ๊ฐœ๋ฐœํ•œ ์ €์ง€์—ฐ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ
  • ZGC๋Š” ์ดˆ์ €์ง€์—ฐ(Low-Latency) ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋กœ, ์ตœ๋Œ€ 1~2ms ์ดํ•˜์˜ GC ์ผ์‹œ ์ •์ง€ ์‹œ๊ฐ„(Pause Time)์„ ๋ชฉํ‘œ๋กœ ์„ค๊ณ„๋œ ์Šค์ผ€์ผ๋Ÿฌ๋ธ”(Scalable) GC์ด๋‹ค.
  • ์…ฐ๋…„๋„์–ด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‘˜ ๋‹ค ์ฒ˜๋ฆฌ๋Ÿ‰์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์ตœ์†Œ๋กœ ์–ต์ œํ•˜๋ฉด์„œ ํž™ ํฌ๊ธฐ์— ์ƒ๊ด€์—†์ด ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์œผ๋กœ ์ธํ•œ ์ผ์‹œ ์ •์ง€ ์‹œ๊ฐ„์„ 10๋ฐ€๋ฆฌ ์ดˆ ์•ˆ์ชฝ์œผ๋กœ ์ค„์ด๊ณ ์ž ํ–ˆ๋‹ค.
  • ์„ธ๋Œ€ ๊ตฌ๋ถ„ ์—†์ด ๋ฆฌ์ „ ๊ธฐ๋ฐ˜ ๋ฉ”๋ชจ๋ฆฌ ๋ ˆ์ด์•„์›ƒ์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋‚ฎ์€ ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ตœ์šฐ์„ ์œผ๋กœ ๋ชฉํ‘œ๋กœ ํ•˜๋ฉฐ, ๋™์‹œ ๋งˆํฌ-์ปดํŒฉํŠธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ฝ๊ธฐ ์žฅ๋ฒฝ, ์ปฌ๋Ÿฌํฌ์ธํ„ฐ, ๋ฉ”๋ชจ๋ฆฌ ๋‹ค์ค‘ ๋งคํ•‘ ๊ธฐ์ˆ ์„ ์ด์šฉํ•˜๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ์ด๋‹ค.

๋ฆฌ์ „ ๊ธฐ๋ฐ˜ ๋ฉ”๋ชจ๋ฆฌ ๋ ˆ์ด์•„์›ƒ

  • ZGC์˜ ๋ฆฌ์ „์€ ๋™์ ์œผ๋กœ ์ƒ์„ฑ/ํŒŒ๊ดด๋˜๋ฉฐ, ํฌ๊ธฐ๋„ ๋™์ ์œผ๋กœ ๋‹ฌ๋ผ์ง„๋‹ค.

๋ณ‘๋ ฌ ๋ชจ์œผ๊ธฐ

  • GC๋Š” ๋ณ‘๋ ฌ ๋ชจ์œผ๊ธฐ(Parallel Compaction) ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๋‹จํŽธํ™”(Fragmentation) ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.
    ์ฆ‰, ๊ฐ์ฒด๋ฅผ ์ด๋™(Compaction)์‹œํ‚ค๋ฉด์„œ ํž™์„ ์ •๋ฆฌํ•˜๋Š” ๊ณผ์ •์„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ์—์„œ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•˜์—ฌ GC ์ผ์‹œ ์ •์ง€ ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

1. ์ผ๋ฐ˜์ ์ธ GC์˜ ๋‹จํŽธํ™” ๋ฌธ์ œ

์ผ๋ฐ˜์ ์ธ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋Š” ๊ฐ์ฒด๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด์„œ ํž™ ๋ฉ”๋ชจ๋ฆฌ์— ๋นˆ ๊ณต๊ฐ„(๋‹จํŽธํ™”)์ด ๋ฐœ์ƒํ•œ๋‹ค.

  • ๋‹จํŽธํ™”๊ฐ€ ์‹ฌํ•ด์ง€๋ฉด ํฐ ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•  ์—ฐ์†๋œ ๊ณต๊ฐ„์„ ์ฐพ์ง€ ๋ชปํ•ด ํ• ๋‹น ์‹คํŒจ ๋ฐœ์ƒํ•œ๋‹ค.
  • ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๊ฐ์ฒด๋ฅผ ์ด๋™ํ•˜์—ฌ ์—ฐ์†๋œ ๊ณต๊ฐ„์„ ํ™•๋ณด(Compaction) ํ•ด์•ผ ํ•œ๋‹ค.
  • ํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ GC๋Š” Compaction ๋‹จ๊ณ„์—์„œ ์Šคํ†ฑ ๋” ์›”๋“œ(Stop-The-World, STW) ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.

ZGC๋Š” ๋ณ‘๋ ฌ ๋ชจ์œผ๊ธฐ(Parallel Compaction)๋ฅผ ํ†ตํ•ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.

 

2. ZGC์˜ ๋ณ‘๋ ฌ ๋ชจ์œผ๊ธฐ ๋ฐฉ์‹

ZGC๋Š” ๊ธฐ์กด์˜ GC์™€ ๋‹ค๋ฅด๊ฒŒ ๋Œ€๋ถ€๋ถ„์˜ ๊ฐ์ฒด ์ด๋™ ์ž‘์—…์„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋™์‹œ์— ์ง„ํ–‰ํ•œ๋‹ค.
์ด ๊ณผ์ •์—์„œ Forwarding Pointer(ํฌ์›Œ๋”ฉ ํฌ์ธํ„ฐ)์™€ Colored Pointer(์ปฌ๋Ÿฌ๋“œ ํฌ์ธํ„ฐ)๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

 

๋ณ‘๋ ฌ ๋ชจ์œผ๊ธฐ 3๋‹จ๊ณ„

ZGC์˜ Compaction ๊ณผ์ •์€ 3๋‹จ๊ณ„๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.

 

1. Prepare(์ค€๋น„ ๋‹จ๊ณ„)

  • ์‚ด์•„ ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์‹๋ณ„ํ•˜๊ณ , ์–ด๋–ค ๊ฐ์ฒด๋ฅผ ์ด๋™ํ• ์ง€ ๊ฒฐ์ •
  • ๊ฐ์ฒด ์ด๋™์ด ํ•„์š”ํ•œ ๋ฆฌ์ „์„ ์„ ํƒ

2. Relocation(๊ฐ์ฒด ์ด๋™ ๋‹จ๊ณ„)

  • ๊ฐ์ฒด๋ฅผ ์ƒˆ๋กœ์šด ์œ„์น˜๋กœ ๋ณ‘๋ ฌ๋กœ ๋ณต์‚ฌ
  • ์ด์ „ ๊ฐ์ฒด์˜ ์ฃผ์†Œ์— ํฌ์›Œ๋”ฉ ํฌ์ธํ„ฐ(Forwarding Pointer)๋ฅผ ์ €์žฅํ•˜์—ฌ ์ฐธ์กฐ ์ž๋™ ์—…๋ฐ์ดํŠธ

3. Remapping(์ฐธ์กฐ ์—…๋ฐ์ดํŠธ ๋‹จ๊ณ„)

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ์ค‘ ๋ชจ๋“  ์ฐธ์กฐ๋ฅผ ์ƒˆ ์ฃผ์†Œ๋กœ ์ž๋™ ๋ณ€๊ฒฝ
  • Colored Pointer๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฆฌ๋งตํ•‘

์ด ๊ณผ์ •์—์„œ GC ์ผ์‹œ ์ •์ง€(Pause Time)๋Š” 1~2ms ์ด๋‚ด๋กœ ์œ ์ง€๋œ๋‹ค.

 

3. ๋ณ‘๋ ฌ ๋ชจ์œผ๊ธฐ์˜ ํ•ต์‹ฌ ๊ธฐ์ˆ 

 1) ํฌ์›Œ๋”ฉ ํฌ์ธํ„ฐ (Forwarding Pointer)

  • ๊ฐ์ฒด๊ฐ€ ์ด๋™๋˜๋ฉด ์ด์ „ ์œ„์น˜์— ์ƒˆ ์œ„์น˜ ์ •๋ณด๋ฅผ ์ €์žฅ
  • ์ฐธ์กฐ๋œ ๊ฐ์ฒด๋ฅผ ์ž๋™์œผ๋กœ ์ƒˆ๋กœ์šด ์œ„์น˜๋กœ ๋ฆฌ๋””๋ ‰์…˜ ๊ฐ€๋Šฅ
  • ๋•๋ถ„์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ์—๋„ ์•ˆ์ „ํ•˜๊ฒŒ ๊ฐ์ฒด ์ด๋™ ๊ฐ€๋Šฅ

 2) ์ปฌ๋Ÿฌ๋“œ ํฌ์ธํ„ฐ (Colored Pointer)

  • 64๋น„ํŠธ ํฌ์ธํ„ฐ์˜ ์ผ๋ถ€ ๋น„ํŠธ๋ฅผ ํ™œ์šฉํ•ด ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ์ €์žฅ
  • ๊ฐ์ฒด๊ฐ€ ์ด๋™๋˜์—ˆ์„ ๋•Œ, ์ฐธ์กฐ๋ฅผ ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ์ถ”๊ฐ€์ ์ธ ์Šคํ†ฑ ๋” ์›”๋“œ ๊ณผ์ • ์—†์ด GC ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ

 

4. ๋ณ‘๋ ฌ ๋ชจ์œผ๊ธฐ์˜ ์žฅ์ 

  • STW(Stop-The-World) ์ตœ์†Œํ™” → GC ์ •์ง€ ์‹œ๊ฐ„์ด 1~2ms ์ดํ•˜๋กœ ์œ ์ง€๋จ
  • ํฐ ํž™(16TB)์—์„œ๋„ ํšจ์œจ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์ •๋ฆฌ ๊ฐ€๋Šฅ
  • ๋ฉ€ํ‹ฐ์ฝ”์–ด CPU ํ™œ์šฉ ๊ทน๋Œ€ํ™” → ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์—์„œ ๊ฐ์ฒด ์ด๋™์„ ๋ณ‘๋ ฌ๋กœ ์ˆ˜ํ–‰
  • ์‹ค์‹œ๊ฐ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉ → ์‘๋‹ต ์†๋„๊ฐ€ ์ค‘์š”ํ•œ ํ™˜๊ฒฝ(์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ, ๋Œ€๊ทœ๋ชจ ์„œ๋ฒ„ ํ™˜๊ฒฝ)์—์„œ ๊ฐ•๋ ฅํ•œ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•œ๋‹ค.

 

5. ๋ณ‘๋ ฌ ๋ชจ์œผ๊ธฐ์˜ ๋‹จ์ 

  • CPU ์˜ค๋ฒ„ํ—ค๋“œ ์ฆ๊ฐ€
    • GC๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰๋˜๋ฏ€๋กœ ์ผ๋ถ€ CPU ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • Throughput(์ฒ˜๋ฆฌ๋Ÿ‰) ๊ฐ์†Œ ๊ฐ€๋Šฅ์„ฑ
    • CPU๋ฅผ ํ™œ์šฉํ•œ GC ์ž‘์—…์ด ๋งŽ์•„์ง์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌ๋Ÿ‰์ด ์•ฝ๊ฐ„ ์ค„์–ด๋“ค ์ˆ˜ ์žˆ๋‹ค.

 


 

์ ํ•ฉํ•œ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ ์„ ํƒํ•˜๊ธฐ

  • ์ž๊ธˆ์€ ์—ฌ์œ ๋กญ์ง€๋งŒ ์ตœ์ ํ™” ๊ฒฝํ—˜์ด ๋ถ€์กฑํ•˜๋‹ค๋ฉด ์œ ๋ฃŒ ๊ธฐ์ˆ  ์ง€์›์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ „์šฉ ํ•˜๋“œ์›จ์–ด์™€ ์†Œํ”„ํŠธ์›จ์–ด ์†”๋ฃจ์…˜์ด ์ข‹์€ ์„ ํƒ์ด๋‹ค. ์ด ๊ฒฝ์šฐ C4 ์ปฌ๋ ‰ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ƒ์šฉ ์ œํ’ˆ์„ ์“ธ ์—ฌ์œ ๋Š” ์—†์ง€๋งŒ ์†Œํ”„ํŠธ์›จ์–ด์™€ ํ•˜๋“œ์›จ์–ด ๋ชจ๋ธ์„ ์ œ์–ดํ•  ๋Šฅ๋ ฅ์ด ๋œ๋‹ค๋ฉด ์ตœ์„  ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์ž. ํŠนํžˆ ์ง€์—ฐ ์‹œ๊ฐ„์ด ์ค‘์š”ํ•˜๋‹ค๋ฉด ZGC๋ฅผ ์‹œ๋„ํ•ด ๋ณด์ž.
  • ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ์„ ๋ฌผ๋ ค๋ฐ›์•„์„œ ํ•˜๋“œ์›จ์–ด์™€ ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์—์„œ ์šด์˜ํ•ด์•ผ ํ•œ๋‹ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์— ๋”ฐ๋ผ ์„ ํƒํ•˜์ž. ํž™ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ 4GB์—์„œ 6GB ์ดํ•˜๋ฉด CMS ๊ฐ€ ๊ดœ์ฐฎ์„ ๊ฒƒ์ด๊ณ , ๊ทธ๋ณด๋‹ค ๋งŽ๋‹ค๋ฉด G1์„ ์‹œ๋„ํ•˜์ž.
  • ์ตœ๋Œ€ 100MB ์ •๋„์˜ ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋ผ๋ฉด ์‹œ๋ฆฌ์–ผ ์ปฌ๋ ‰ํ„ฐ.
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋‹จ์ผ ํ”„๋กœ์„ธ์„œ๋งŒ ์‚ฌ์šฉํ•˜๊ณ  ์ผ์‹œ ์ •์ง€ ์‹œ๊ฐ„ ๊ด€๋ จ ์ œ์•ฝ์ด ์—†๋‹ค๋ฉด ์‹œ๋ฆฌ์–ผ ์ปฌ๋ ‰ํ„ฐ.
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ตœ๋Œ€ ์„ฑ๋Šฅ์ด ๊ฐ€์žฅ ์ค‘์š”ํ•˜๊ณ , ์ง€์—ฐ ์‹œ๊ฐ„ ๊ด€๋ จ ์ œ์•ฝ์ด ์—†๊ฑฐ๋‚˜ 1์ดˆ ์ด์ƒ์˜ ์ง€์—ฐ ์‹œ๊ฐ„๋„ ํ—ˆ์šฉ๋œ๋‹ค๋ฉด ๊ฐ€์ƒ ๋จธ์‹ ์˜ ๊ธฐ๋ณธ ์ปฌ๋ ‰ํ„ฐ๋‚˜ ํŒจ๋Ÿฌ๋  ์ปฌ๋ ‰ํ„ฐ.
  • ์ฒ˜๋ฆฌ๋Ÿ‰๋ณด๋‹ค ์‘๋‹ต ์‹œ๊ฐ„์ด ์ค‘์š”ํ•˜๊ณ  ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์— ๋”ฐ๋ฅธ ์ผ์‹œ ์ •์ง€๊ฐ€ ์งง์•„์•ผ ํ•œ๋‹ค๋ฉด G1
  • ์‘๋‹ต ์‹œ๊ฐ„์ด ๋งค์šฐ ์ค‘์š”ํ•˜๋ฉด (์„ธ๋Œ€ ๊ตฌ๋ถ„) ZGC

 

๊ฐ€์ƒ ๋จธ์‹ ๊ณผ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ ๋กœ๊ทธ

  • ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ ์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฃจ๋ ค๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ€์ƒ ๋จธ์‹ ๊ณผ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ๊ธฐ๋กํ•œ ๋กœ๊ทธ๋ฅผ ์ฝ๊ณ  ๋ถ„์„ํ•  ์ค„ ์•Œ์•„์•ผ ํ•œ๋‹ค.
  • Java 9๋ถ€ํ„ฐ -Xlog ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด JVM๊ณผ GC ๋กœ๊ทธ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. -Xlog ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ๋ชจ๋“  ํ•ซ์ŠคํŒŸ ๊ธฐ๋Šฅ์˜ ๋กœ๊ทธ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๊ณ , ์ด ๋งค๊ฐœ ๋ณ€์ˆ˜ ์ž์ฒด์˜ ๊ธฐ๋Šฅ ์—ญ์‹œ ๋Š˜์—ˆ๋‹ค.
 

๊ธฐ๋ณธ์ ์ธ -Xlog ์‚ฌ์šฉ๋ฒ•

- Xlog:<์ถœ๋ ฅ ๋Œ€์ƒ>:<์ถœ๋ ฅ ์ˆ˜์ค€>:<์ถœ๋ ฅ ํƒœ๊ทธ>:<ํŒŒ์ผ ๊ฒฝ๋กœ>:<๋กค๋ง ์˜ต์…˜>
  • <์ถœ๋ ฅ ๋Œ€์ƒ> → stdout, stderr, file=<ํŒŒ์ผ ๊ฒฝ๋กœ> ๋“ฑ
  • <์ถœ๋ ฅ ์ˆ˜์ค€> → trace, debug, info, warning, error
  • <์ถœ๋ ฅ ํƒœ๊ทธ> → gc, heap, safepoint, classload, jit ๋“ฑ
  • <ํŒŒ์ผ ๊ฒฝ๋กœ> → ๋กœ๊ทธ๋ฅผ ์ €์žฅํ•  ํŒŒ์ผ ๊ฒฝ๋กœ ์ง€์ •
  • <๋กค๋ง ์˜ต์…˜> → ํŒŒ์ผ ํฌ๊ธฐ ๋ฐ ๊ฐœ์ˆ˜ ์ œํ•œ (filecount=10, filesize=10MB ๋“ฑ)

 

GC ๋กœ๊ทธ๋ฅผ ๊ธฐ๋กํ•˜๋Š” -Xlog ์˜ˆ์ œ

java -Xlog:gc=info:file=gc.log:time,uptime,level,tags

 

  • gc=info → GC ๊ด€๋ จ ๋กœ๊ทธ๋ฅผ INFO ๋ ˆ๋ฒจ๋กœ ์ถœ๋ ฅ
  • file=gc.log → gc.log ํŒŒ์ผ์— ๊ธฐ๋ก
  • time, uptime, level, tags → ๋กœ๊ทธ์— ์‹œ๊ฐ„, ์‹คํ–‰ ์‹œ๊ฐ„, ๋ ˆ๋ฒจ, ํƒœ๊ทธ ํฌํ•จ

 

๋‹ค์–‘ํ•œ GC ๋กœ๊ทธ ์„ค์ • ์˜ˆ์ œ

  • GC ์ด๋ฒคํŠธ๋งŒ ๋กœ๊น…
java -Xlog:gc GCTest

๊ธฐ๋ณธ ์ •๋ณด๋ฅผ ๋ณด๋ ค๋ฉด -Xlog:gc๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

java -Xlog:gc=debug GCTest

debug ์ˆ˜์ค€์˜ GC ์ด๋ฒคํŠธ๋ฅผ ํ‘œ์ค€ ์ถœ๋ ฅ์œผ๋กœ ๊ธฐ๋ก

java -Xlog:gc* GCTest

gc ํƒœ๊ทธ์˜ ๋ชจ๋“  ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค๋ฅผ ํฌํ•จํ•œ ์ƒ์„ธ ์ •๋ณด

  • ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์ „ํ›„๋กœ ๊ฐ€์šฉํ•œ ํž™๊ณผ ๋ฉ”์„œ๋“œ ์˜์—ญ์˜ ์šฉ๋Ÿ‰ ๋ณ€ํ™”๋ฅผ ํ™•์ธ
java -Xlog:gc+heap=debug GCTest
  • ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์ค‘ ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ์˜ ๋™์‹œ ์‹คํ–‰ ์‹œ๊ฐ„๊ณผ ์ผ์‹œ ์ •์ง€ ์‹œ๊ฐ„์„ ํ™•์ธ
java -Xlog:safepoint GCTest
  • GC ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ จ ๋กœ๊ทธ๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅ
java -Xlog:gc*,heap=info:file=gc.log:time,level,tags

GC์™€ Heap ๊ด€๋ จ INFO ๋กœ๊ทธ๋ฅผ gc.log ํŒŒ์ผ์— ๊ธฐ๋ก

 

  • ํšŒ์ˆ˜ ํ›„ ๋‚จ์€ ๊ฐ์ฒด๋“ค์˜ ๋‚˜์ด ๋ถ„ํฌ ํ™•์ธ
java -Xlog:gc+age=trace GCTest

 

  • JVM ๋‚ด๋ถ€ ๋™์ž‘๋„ ํฌํ•จํ•˜์—ฌ ์ƒ์„ธ ๋กœ๊ทธ ๊ธฐ๋ก
java -Xlog:gc*,safepoint,heap,metaspace=debug:file=jvm.log

GC, Safepoint, Heap, Metaspace ๊ด€๋ จ DEBUG ๋กœ๊ทธ๋ฅผ jvm.log ํŒŒ์ผ์— ๊ธฐ๋ก

 

  • ๋กœ๊ทธ ํŒŒ์ผ ํฌ๊ธฐ ์ œํ•œ (10MB, ์ตœ๋Œ€ 5๊ฐœ ํŒŒ์ผ ์œ ์ง€)
java -Xlog:gc=info:file=gc.log:time,uptime,level,tags:filecount=5,filesize=10MB

gc.log ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ ์ตœ๋Œ€ 10MB๋กœ ์„ค์ •, ์ตœ๋Œ€ 5๊ฐœ๊นŒ์ง€ ์œ ์ง€

 

 


 

 

์‹ค์ „ : ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ณผ ํšŒ์ˆ˜ ์ „๋žต

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

ํ•˜์ง€๋งŒ ๊ฐ์ฒด์˜ ํ• ๋‹น ๋ฐฉ์‹์€ ๊ณ ์ •๋˜์ง€ ์•Š๋Š”๋‹ค. ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ (JVM) ๋ช…์„ธ์—์„œ๋Š” ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ์ €์žฅ ๋ฐฉ์‹์„ ๋ช…ํ™•ํžˆ ์ •์˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์‹ค์ œ ๋™์ž‘ ๋ฐฉ์‹์€ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ(GC)์™€ JVM ๋ฉ”๋ชจ๋ฆฌ ์„ค์ •์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค.

 

1. ๊ฐ์ฒด๋Š” ๋จผ์ € ์—๋ด์— ํ• ๋‹น๋œ๋‹ค.

๊ฐ์ฒด๋Š” ๋จผ์ € ์—๋ด(Eden) ์˜์—ญ์— ํ• ๋‹น๋˜๋ฉฐ, ์—๋ด์˜ ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•ด์ง€๋ฉด ๋งˆ์ด๋„ˆ GC(Minor GC)๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

๋˜ํ•œ, ํ•ซ์ŠคํŒŸ ๊ฐ€์ƒ ๋จธ์‹ (HotSpot JVM)์˜ -Xlog:gc* ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(GC) ์‹œ ๋ฉ”๋ชจ๋ฆฌ ํšŒ์ˆ˜ ๋กœ๊ทธ๋ฅผ ์ถœ๋ ฅํ•˜๋ฉฐ, ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ ์‹œ ๊ฐ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์˜ ํ• ๋‹น ์ƒํƒœ๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์‹ค์ „์—์„œ๋Š” GC ๋กœ๊ทธ๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜์—ฌ ์ „๋ฌธ ๋ถ„์„ ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•ด ๋ถ„์„ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

 

2. ํฐ ๊ฐ์ฒด๋Š” ๊ณง๋ฐ”๋กœ ๊ตฌ์„ธ๋Œ€์— ํ• ๋‹น๋œ๋‹ค.

ํฐ ๊ฐ์ฒด๋Š” ๊ณง๋ฐ”๋กœ ๊ตฌ์„ธ๋Œ€(Old Generation)์— ํ• ๋‹น๋œ๋‹ค. ์—ฌ๊ธฐ์„œ ํฐ ๊ฐ์ฒด๋Š” ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ•„์š”๋กœ ํ•˜๋Š” ์ž๋ฐ” ๊ฐ์ฒด๋กœ, ๋งค์šฐ ๊ธด ๋ฌธ์ž์—ด์ด๋‚˜ ์›์†Œ๊ฐ€ ๋งŽ์€ ๋ฐฐ์—ด์ด ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์ด๋‹ค.

๊ฐ€์ƒ ๋จธ์‹ ์—์„œ ํฐ ๊ฐ์ฒด์˜ ๋“ฑ์žฅ์€ ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์‚ฌ๋ผ์งˆ ํฐ ๊ฐ์ฒด๋“ค์ด ๋Œ€๋Ÿ‰์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ์ƒํ™ฉ์€ ๋”์šฑ ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์€ ์—ฌ์œ  ๊ณต๊ฐ„์ด ๋งŽ์Œ์—๋„ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(GC)์„ ์ž์ฃผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์›์ธ์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

ํฐ ๊ฐ์ฒด๋ฅผ ์œ„ํ•œ ์—ฐ์†๋œ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ๊ฐ์ฒด๋“ค์„ ์ด๋™ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์‹ฌ๊ฐํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ณต์‚ฌ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ดˆ๋ž˜ํ•œ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด -XX:PretenureSizeThreshold ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋ฉด, ์„ค์ •๊ฐ’๋ณด๋‹ค ํฐ ๊ฐ์ฒด๋ฅผ ๊ณง๋ฐ”๋กœ ๊ตฌ์„ธ๋Œ€์— ํ• ๋‹นํ•˜๊ฒŒ ๋˜์–ด, ์—๋ด๊ณผ ๋‘ ์ƒ์กด์ž ๊ณต๊ฐ„ ์‚ฌ์ด์˜ ๋Œ€๊ทœ๋ชจ ๋ณต์‚ฌ๋ฅผ ์ค„์ด๋Š” ๋ฐ ๊ธฐ์—ฌํ•œ๋‹ค.

-XX:PretenureSizeThreshold ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” ์‹œ๋ฆฌ์–ผ๊ณผ ํŒŒ๋‰ด ์‹ ์„ธ๋Œ€ ์ปฌ๋ ‰ํ„ฐ์—๋งŒ ์ ์šฉ๋œ๋‹ค. PS ์ปฌ๋ ‰ํ„ฐ์™€ ๋‹ค๋ฅธ ์ปฌ๋ ‰ํ„ฐ๋“ค์€ ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. 

 

3. ๋‚˜์ด๊ฐ€ ์ฐจ๋ฉด ๊ตฌ์„ธ๋Œ€๋กœ ์˜ฎ๊ฒจ์ง„๋‹ค.

ํ•ซ์ŠคํŒŸ ๊ฐ€์ƒ ๋จธ์‹ ์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋Š” ํž™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์„ธ๋Œ€ ๋‹จ์œ„ ์ปฌ๋ ‰์…˜์„ ํ™œ์šฉํ•œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฒญ์†Œํ•  ๋•Œ๋Š” ์–ด๋–ค ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ์‹ ์„ธ๋Œ€(Young Generation)์— ๋‚จ๊ธฐ๊ณ , ์–ด๋–ค ์ƒ์กด ๊ฐ์ฒด๋ฅผ ๊ตฌ์„ธ๋Œ€(Old Generation)๋กœ ์˜ฎ๊ธธ์ง€๋ฅผ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๊ฐ ๊ฐ์ฒด์˜ ๊ฐ์ฒด ํ—ค๋”์— ์„ธ๋Œ€ ๋‚˜์ด ์นด์šดํ„ฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.

๊ฐ์ฒด๋Š” ์ฃผ๋กœ ์—๋ด(Eden)์—์„œ ํƒœ์–ด๋‚˜๋ฉฐ, ์ดˆ๊ธฐ ๋‚˜์ด๋Š” 0์ด๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋งˆ์ด๋„ˆ GC(Minor GC)์—์„œ ์‚ด์•„๋‚จ์€ ๊ฐ์ฒด๋Š” ์ƒ์กด์ž ๊ณต๊ฐ„(Survivor Space)์œผ๋กœ ์ด๋™ํ•˜๊ณ  ๋‚˜์ด๊ฐ€ 1๋กœ ์ฆ๊ฐ€ํ•œ๋‹ค. ์ดํ›„ ์ƒ์กด์ž ๊ณต๊ฐ„์—์„œ ๋งˆ์ด๋„ˆ GC๋ฅผ ๊ฒช์„ ๋•Œ๋งˆ๋‹ค ๋‚˜์ด๊ฐ€ 1์”ฉ ์ฆ๊ฐ€ํ•˜๋ฉฐ, ํŠน์ • ๋‚˜์ด์— ๋„๋‹ฌํ•˜๋ฉด ๊ตฌ์„ธ๋Œ€๋กœ ์Šน๊ฒฉ๋œ๋‹ค.

๊ตฌ์„ธ๋Œ€๋กœ ์Šน๊ฒฉ๋˜๋Š” ๋‚˜์ด๋Š” -XX:MaxTenuringThreshold ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ธฐ๋ณธ๊ฐ’์€ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ์˜ ์ข…๋ฅ˜์™€ JDK ๋ฒ„์ „์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค.

-XX:TargetSurvivorRatio ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋ฉด ๋‚˜์ด ์ƒ๊ด€์—†์ด ์ƒ์กด์ž ๊ณต๊ฐ„์ด ์ง€์ •ํ•œ ๋น„์œจ ์ด์ƒ ์ฐจ๋ฉด ์‚ด์•„๋‚จ์€ ๊ฐ์ฒด๋“ค์„ ๊ตฌ์„ธ๋Œ€๋กœ ์Šน๊ฒฉ์‹œํ‚จ๋‹ค. 

 

๊ณต๊ฐ„์ด ๋น„์ข์œผ๋ฉด ๊ฐ•์ œ๋กœ ์Šน๊ฒฉ์‹œํ‚จ๋‹ค.

๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ํŒจํ„ด์— ๋” ์ •๋ฐ€ํ•˜๊ฒŒ ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•ด ํ•ซ์ŠคํŒŸ ๊ฐ€์ƒ ๋จธ์‹ ์€ ๋‚˜์ด๊ฐ€ -XX::MaxTenuringThreshold๋ณด๋‹ค ์ ์–ด๋„ ๊ตฌ์„ธ๋Œ€๋กœ ์Šน๊ฒฉ์‹œํ‚ค๊ธฐ๋„ ํ•œ๋‹ค. '์ƒ์กด์ž ๊ณต๊ฐ„ ์ ์œ ์œจ'์ด ์กฐ๊ฑด์ด๋ฉฐ, ๊ธฐ๋ณธ๊ฐ’์€ 50%๋ผ์„œ ์ƒ์กด ๊ฐ์ฒด ์ „์ฒด์˜ ํฌ๊ธฐ ์ดํ•ฉ์ด ์ƒ์กด์ž ๊ณต๊ฐ„์˜ ์ ˆ๋ฐ˜์„ ๋„˜์–ด์„œ๋ฉด ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ๊ตฌ์„ธ๋Œ€๋กœ ์˜ฎ๊ธด๋‹ค.

 

 

 

 

 

 

 

์ฐธ๊ณ 

https://product.kyobobook.co.kr/detail/S000213057051

 

JVM ๋ฐ‘๋ฐ”๋‹ฅ๊นŒ์ง€ ํŒŒํ—ค์น˜๊ธฐ | ์ €์šฐ์ฆˆ๋ฐ - ๊ต๋ณด๋ฌธ๊ณ 

JVM ๋ฐ‘๋ฐ”๋‹ฅ๊นŒ์ง€ ํŒŒํ—ค์น˜๊ธฐ | ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ ์˜ ๊นŠ์ˆ™ํ•œ ๋‚ด๋ถ€๋ฅผ ํ–ฅํ•ด ๋– ๋‚˜๋Š” ํฅ๋ฏธ์ง„์ง„ํ•œ ๋ชจํ—˜C·C++๋ฅผ ์‚ฌ์šฉํ•ด ์ฃผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋˜ ์‹œ์ ˆ ๊นŒ๋‹ค๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์™€ ํ”Œ๋žซํผ ์ด์‹์„ฑ ๋ฌธ์ œ๋Š” ๊ฐœ๋ฐœ์ž๋“ค์—

product.kyobobook.co.kr