์ง๋ ฌ GC
๊ฐ๋น์ง ์์ง์ ํ์์ ์ฐธ์กฐ๋์ง ์์ ๊ฐ์ฒด๋ฅผ ์ ๊ฑฐํ๊ณ ์๋ก ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ์ํ ๊ณต๊ฐ์ ๋ง๋ค์ด Java์ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ์ ํฅ์์ํต๋๋ค.
JVM(Java Virtual Machine)์๋ 8๊ฐ์ง ์ ํ์ ๊ฐ๋น์ง ์ฝ๋ ํฐ๊ฐ ์์ต๋๋ค. ๊ฐ๊ฐ์ ์์ธํ ์ดํด ๋ณด๊ฒ ์ต๋๋ค.
์ง๋ ฌ GC๋ ๊ฐ์ฅ ๊ฐ๋จํ GC ๊ตฌํ์ ๋๋ค. ๋จ์ผ ์ค๋ ๋ ํ๊ฒฝ์์ ์คํ๋๋ ์๊ท๋ชจ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ํ ๊ฒ์ ๋๋ค. ๋ชจ๋ ๊ฐ๋น์ง ์์ง ์ด๋ฒคํธ๋ ๋์ผํ ์ค๋ ๋์์ ์์ฐจ์ ์ผ๋ก ์คํ๋ฉ๋๋ค. ์์ถ์ ๊ฐ ๊ฐ๋น์ง ์์ง ํ์ ์ํ๋ฉ๋๋ค.
์์ง๊ธฐ๋ฅผ ์คํํ๋ฉด ์ ์ฒด ์์ฉ ํ๋ก๊ทธ๋จ์ด ์ผ์ ์ค๋จ๋๋ "์ธ๊ณ ์ค์ง" ์ด๋ฒคํธ๊ฐ ๋ฐ์ํฉ๋๋ค. ๊ฐ๋น์ง ์์ง ์ค์ ์ ์ฒด ์์ฉ ํ๋ก๊ทธ๋จ์ด ์ค์ง๋๋ฏ๋ก ์ง์ฐ์ ๊ฐ๋ฅํ ํ ๋ฎ๊ฒ ์ ์งํ๋ ค๋ฉด ์ค์ํ์์ ์ด์ ์์กดํด์๋ ์ ๋ฉ๋๋ค.
์ง๋ ฌ ๊ฐ๋น์ง ์์ง๊ธฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ JVM ์ธ์๋ -XX:+UseSerialGC ์ ๋๋ค .
๋ณ๋ ฌ GC
๋ณ๋ ฌ ๊ฐ๋น์ง ์์ง๊ธฐ๋ ๋ค์ค ์ค๋ ๋ ๋๋ ๋ค์ค ํ๋ก์ธ์ ํ๋์จ์ด์์ ์คํ๋๋ ์ค๋ํ ๋ฐ์ดํฐ ์ธํธ๊ฐ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฉ์ผ๋ก ์ค๊ณ๋์์ต๋๋ค. ์ด๊ฒ์ ๊ธฐ๋ณธ GC ๊ตฌํ์ด๋ฉฐ ์ฒ๋ฆฌ๋ ์์ง๊ธฐ๋ผ๊ณ ๋ ํฉ๋๋ค.
์ ์ ์ธ๋์์ ์์ ๊ฐ๋น์ง ์์ง์ ์ํด ์ฌ๋ฌ ์ค๋ ๋๊ฐ ์ง์ ๋ฉ๋๋ค. ์ ์ผํ ์ค๋ ๋๋ ์ด์ ์ธ๋์ ๊ธฐ๋ณธ ๊ฐ๋น์ง ์์ง์ผ๋ก ์ฌ์ฉ ์ค์ ๋๋ค.
๋ณ๋ ฌ GC๋ฅผ ์คํํ๋ฉด ์ธ์์ด "์ค์ง"๋๊ณ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์ค๋จ๋ฉ๋๋ค. ์ด ๋์์ ๋ฐฐ์น ์์ ์ ์คํํ ๋์ ๊ฐ์ด ๋ง์ ์์ ์ ์๋ฃํด์ผ ํ๊ณ ๊ธด ์ผ์ ์ค์ง๊ฐ ํ์ฉ๋๋ ๋ค์ค ์ค๋ ๋ ํ๊ฒฝ์ ๋ ์ ํฉํฉ๋๋ค.
๋ณ๋ ฌ ๊ฐ๋น์ง ์์ง๊ธฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ JVM ์ธ์๋ -XX:+UseParallelGC ์ ๋๋ค .
์จ์ ์์คGC
๋ฎ์ ๋๋จธ์ง ๋ณ๋ ฌ ํผ์ปค ๋ผ๊ณ ๋ ํฉ๋๋ค .
์ฌ๊ธฐ์์ ์์ ๊ฐ๋น์ง ์์ง์ ๊ฒฝ์ฐ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๊ด๋ จ๋๋ฉฐ ์ด๋ ๋ณ๋ ฌ ์์ง๊ธฐ์์์ ๋์ผํ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ๋ฐ์ํฉ๋๋ค. ์ฃผ์ ๊ฐ๋น์ง ์์ง์ ์ด์ ๋ณ๋ ฌ GC์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฉํฐ์ค๋ ๋ ๋ฐฉ์์ด์ง๋ง CMS๋ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก์ธ์ค์ ๋์์ ์คํ๋์ด "์๋ ์คํฑ" ์ด๋ฒคํธ๋ฅผ ์ต์ํํฉ๋๋ค.
์ด ๋๋ฌธ์ CMS ์ปฌ๋ ํฐ๋ ๋ค๋ฅธ ์ปฌ๋ ํฐ๋ณด๋ค ๋ ๋ง์ CPU๋ฅผ ์๋นํฉ๋๋ค. ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ๋ ๋ง์ CPU๋ฅผ ํ ๋นํ ์ ์๋ ๋ฅ๋ ฅ์ด ์๋ค๋ฉด ๋จ์ํ ๋ณ๋ ฌ ์์ง๊ธฐ๋ณด๋ค CMS๊ฐ ๋ ์ข์ต๋๋ค. CMS GC๋ ์์ถ๋์ง ์์ต๋๋ค.
๋ณ๋ ฌ ๋งํฌ ์ค์ ๊ฐ๋น์ง ์์ง๊ธฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ JVM ์ธ์๋ -XX:+UseConcMarkSweepGC ์ ๋๋ค .
G1(์ฐ๋ ๊ธฐ ์ฐ์ ) โโGC
G1GC๋ CMS๋ฅผ ๋์ฒดํ ๊ฒ์ผ๋ก ์๊ฐ๋์์ผ๋ฉฐ ํฐ ํ ํฌ๊ธฐ(4GB ์ด์)๊ฐ ํน์ง์ธ ๋ค์ค ์ค๋ ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ฉ์ผ๋ก ๊ฐ๋ฐ๋์์ต๋๋ค. CMS์ ๊ฐ์ด ๋ณ๋ ฌ์ ์ด๊ณ ๊ฒฝ์๋ ฅ์ด ์์ง๋ง ๋ด๋ถ์ ์ผ๋ก๋ ์ด์ ๊ฐ๋น์ง ์์ง๊ธฐ์๋ ๋งค์ฐ ๋ค๋ฅด๊ฒ ์๋ํฉ๋๋ค.
G1๋ ์ธ๋๋ณ๋ก ์ด์๋์ง๋ง ์ ์ ์ธ๋์ ๊ธฐ์ฑ์ธ๋๋ฅผ ์ํ ๋ณ๋์ ๊ณต๊ฐ์ ์๋ค. ๋์ ๊ฐ ์ธ๋๋ ์์ญ ์งํฉ์ด๋ฏ๋ก ์ ์ ์ธ๋์ ํฌ๊ธฐ๋ฅผ ์ ์ฐํ๊ฒ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
G1์ ํ์ ๋์ผํ ํฌ๊ธฐ์ ์์ญ ์ธํธ(ํ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ค๋ฆ)๋ก ๋ถํ ํ๊ณ ์ฌ๋ฌ ์ค๋ ๋๋ก ์ค์บํฉ๋๋ค. ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ๋์ ์์ญ์ ๋ฐ๋ณต์ ์ผ๋ก ์ค๋๋๊ณ ์ ์ด์ง ์ ์์ต๋๋ค.
๋งํฌ์ ๋จ๊ณ๊ฐ ์๋ฃ๋๋ฉด G1์ ์ด๋ ์์ญ์ ์ ํฌ๊ฐ ๊ฐ์ฅ ๋ง์์ง ์๊ฒ ๋ฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ผ์ ์ค์ง๋ฅผ ์ต์ํํ๋ ๋ฐ ๊ด์ฌ์ด ์๋ ๊ฒฝ์ฐ G1์ ์ผ๋ถ ์์ญ๋ง ์ ํํ ์ ์์ต๋๋ค. ์ผ์ ์ค์ง ์๊ฐ์ด ์ฌ์ฉ์์๊ฒ ์ค์ํ์ง ์๊ฑฐ๋ ์ผ์ ์ค์ง ์๊ฐ ์ ํ์ด ๋๊ฒ ์ค์ ๋ ๊ฒฝ์ฐ G1์ ๋ ๋ง์ ์์ญ์ ์ด๋ํฉ๋๋ค.
G1 GC๋ ๊ฐ๋น์ง๊ฐ ๊ฐ์ฅ ๋ง์ ์์ญ์ ์๋ณํ๊ณ ํด๋น ์์ญ์์ ๋จผ์ ๊ฐ๋น์ง ์์ง์ ์ํํ๋ฏ๋ก "Garbage First"๋ผ๊ณ ํฉ๋๋ค.
Eden, Survivors, Old Memory ์์ญ ์ธ์๋ G1GC์๋ ๋ ๊ฐ์ง ์ ํ์ด ๋ ์์ต๋๋ค.
- Humongous (Huge) - ํฌ๊ธฐ๊ฐ ํฐ ๊ฐ์ฒด์ฉ(ํ ํฌ๊ธฐ์ 50% ์ด์).
- ์ฌ์ฉ ๊ฐ๋ฅ - ์ฌ์ฉ๋์ง ์๊ฑฐ๋ ํ ๋น๋์ง ์์ ๊ณต๊ฐ์ ๋๋ค.
G1 ๊ฐ๋น์ง ์์ง๊ธฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ JVM ์ธ์๋ -XX:+UseG1GC ์ ๋๋ค .
์ ฐ๋๋์ด(์จ๋ค๋ผ)
Shenandoah ๋ JDK 12์ ์ผ๋ถ๋ก ์ถ์๋ ์๋ก์ด GC์ ๋๋ค. G1์ ๋นํด Shenandoah์ ์ฃผ์ ์ด์ ์ ๋๋ถ๋ถ์ ๊ฐ๋น์ง ์์ง ์ฃผ๊ธฐ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ค๋ ๋์ ๋์์ ์ํ๋๋ค๋ ๊ฒ์ ๋๋ค. G1์ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์ผ์ ์ค๋จ๋ ๊ฒฝ์ฐ์๋ง ํ ์์ญ์ ๋น์ธ ์ ์์ผ๋ฉฐ Shenandoah๋ ์์ฉ ํ๋ก๊ทธ๋จ๊ณผ ๋์์ ๊ฐ์ฒด๋ฅผ ์ด๋ํฉ๋๋ค.
Shenandoah๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ฐ๊ฒฌ๋๋ ์ฆ์ ๋ผ์ด๋ธ ๊ฐ์ฒด๋ฅผ ์์ถํ๊ณ , ์ฐ๋ ๊ธฐ๋ฅผ ์ ๋ฆฌํ๊ณ , RAM์ ํด์ ํ ์ ์์ต๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ผ์ ์ค๋จํ์ง ์๊ณ ๋์์ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ Shenandoah๋ CPU๋ฅผ ๋ ๋ง์ด ์ฌ์ฉํฉ๋๋ค.
ZGC
ZGC ๋ JDK 11์ ์ผ๋ถ๋ก ๋ฆด๋ฆฌ์ค๋๊ณ JDK 12์์ ๊ฐ์ ๋ ๋ ๋ค๋ฅธ GC์ ๋๋ค.
์๋์ ๋ฎ์ ๋๊ธฐ ์๊ฐ(10ms ๋ฏธ๋ง์ ์ผ์ ์ค์ง)์ด ํ์ํ๊ฑฐ๋ ๋งค์ฐ ํฐ ํ(์ ํ ๋ผ๋ฐ์ดํธ)์ ์ฌ์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ๊ฒ์ ๋๋ค.
ZGC์ ์ฃผ์ ๋ชฉํ๋ ๋ฎ์ ๋๊ธฐ ์๊ฐ, ํ์ฅ์ฑ ๋ฐ ์ฌ์ฉ ํธ์์ฑ์ ๋๋ค. ์ด๋ฅผ ์ํด ๊ฐ๋น์ง ์์ง ์์ ์ด ์งํ ์ค์์๋ ๋ถ๊ตฌํ๊ณ Java ์์ฉ ํ๋ก๊ทธ๋จ์ด ๊ณ์ ์คํ๋ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ZGC๋ ์ฌ์ฉํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๊ณ ์ด์ ์ฒด์ ์ ๋ฐํํฉ๋๋ค.
๋ฐ๋ผ์ ZGC๋ ๋งค์ฐ ๋ฎ์ ๋ถ๊ฐ ์๊ฐ(์ผ๋ฐ์ ์ผ๋ก 2ms ์ด๋ด)์ ์ ๊ณตํจ์ผ๋ก์จ ๋ค๋ฅธ ๊ธฐ์กด GC์ ๋นํด ์๋นํ ๊ฐ์ ์ ๊ฐ์ ธ์ต๋๋ค.
ZGC ๊ฐ๋น์ง ์์ง๊ธฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ JVM ์ธ์๋ -XX:+UnlockExperimentalVMOptions -XX:+UseZGC ์ ๋๋ค .
GO TO FULL VERSION