GC

GC๋ž€?

  • Java runtime ์‹œ Heap ์˜์—ญ์— ์ €์žฅ๋˜๋Š” ๊ฐ์ฒด๋“ค์€ ๋”ฐ๋กœ ์ •๋ฆฌํ•˜์ง€ ์•Š์œผ๋ฉด ๊ณ„์† ์Œ“์ด๊ฒŒ ๋˜์–ด OutOfMemory Exception ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค

  • ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ JVM์—์„œ๋Š” ์ฃผ๊ธฐ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ ์ •๋ฆฌํ•˜๋Š” Garbage Collection ์„ ์ง„ํ–‰ํ•œ๋‹ค

Heap ์˜์—ญ

  • ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„

  • new ์—ฐ์‚ฐ์ž๋กœ ์ƒ์„ฑ๋œ ๊ฐ์ฒด์™€ ๋ฐฐ์—ด์„ ์ €์žฅํ•œ๋‹ค

Heap ๊ตฌ์กฐ

  • young : ๋น„๊ต์  ์ Š์€ reference๊ฐ€ ์‚ด์•„์žˆ๋Š” ๊ณณ

    • eden

      • young generation ์ค‘์—์„œ๋„ ๋ฐฉ๊ธˆ ๋ง‰ ์ƒ์„ฑ๋œ reference๊ฐ€ ์žˆ๋Š” ๊ณณ

    • survior

      • ์˜์—ญ์ด ๋‘ ๊ฐœ ์กด์žฌ

      • eden์—์„œ ์ƒ์กดํ•œ reference๊ฐ€ ๋‹น๋ถ„๊ฐ„ ์ƒ์กดํ•ด ์žˆ๋Š” ๊ณณ

  • old : ํŠน์ • ํšŸ์ˆ˜ ์ด์ƒ ์‚ด์•„๋‚จ์€ reference๊ฐ€ ์ƒ์กดํ•ด ์žˆ๋Š” ๊ณณ

  • permanent: method area์˜ metadata ์ •๋ณด๊ฐ€ ๊ธฐ๋ก๋œ ๊ณณ

Minor GC์™€ Major (Full) GC

GC๊ฐ€ ์ˆ˜ํ–‰๋˜๋Š” ์˜์—ญ์— ๋”ฐ๋ผ Minor GC ์™€ Major GC ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค

  • Minor GC

    • Young Generation (Eden๊ณผ Survivor 1, 2) ์˜์—ญ์˜ ๊ฐ์ฒด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‚ญ์ œํ•œ๋‹ค

  • Major GC

    • Minor GC ๊ณผ์ •์—์„œ ์‚ญ์ œ๋˜์ง€ ์•Š๊ณ , Old Generation ์˜์—ญ์œผ๋กœ ์˜ฎ๊ฒจ์ง„ ๊ฐ์ฒด ์ค‘ ๋ฏธ์‚ฌ์šฉ์œผ๋กœ ํŒ๋‹จ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‚ญ์ œํ•œ๋‹ค

    • ๋ฐœ์ƒ ์›์ธ

      • Old Generation ์˜์—ญ์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ฐ€๋“ ์ฐจ์„œ ๋” ์ด์ƒ ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์—†์„ ๋•Œ

      • Old Generation ์˜์—ญ์˜ ๊ฐ์ฒด ์ค‘์—์„œ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๊ฐ€ ๋งŽ์„ ๋•Œ

      • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์žฅ์‹œ๊ฐ„ ์‹คํ–‰๋˜๊ณ  Old Generation ์˜์—ญ์˜ ๊ฐ์ฒด๊ฐ€ ์ง€์†์ ์œผ๋กœ ์ƒ์„ฑ๋˜๊ณ  ์†Œ๋ฉธ๋  ๋•Œ

  • ์ฃผ์˜ ์‚ฌํ•ญ

    • Major GC๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด GC๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด JVM์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์„ ๋ฉˆ์ถ”๊ฒŒ ๋˜๋ฉฐ, ์ด๋ฅผ Stop-the-World ํ˜„์ƒ์ด๋ผ๊ณ  ํ•œ๋‹ค

    • ๋ชจ๋“  thread๊ฐ€ ์ •์ง€๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ์ด์ƒ ์ž‘์—…์ด ์‹คํ–‰๋˜์ง€ ์•Š๊ณ , ์„ฑ๋Šฅ์ด ์ €ํ•˜๋œ๋‹ค

      • ์ ์ ˆํ•œ ๋นˆ๋„์˜ GC๊ฐ€ ์‹คํ–‰๋˜๋„๋ก ํ•˜์—ฌ, Stop-the-World ์‹œ๊ฐ„์„ ์ค„์—ฌ thread๊ฐ€ ์ •์ง€๋˜๋Š” ์‹œ๊ฐ„์„ ์ค„์ด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค

Last updated

Was this helpful?