GC Algorithm
Parallel CG
Java 8์์ default GC๋ก ์ ์ฉ
minor collection์
๋ณ๋ ฌ
๋ก ์ํํ๋คGC์ ์ค๋ฒํค๋๋ฅผ ํ์ ํ๊ฒ ์ค์ผ ์ ์๋ค
multi processor๋ multi thread hardware ์์ ๋์๊ฐ๋
์ค๋ํ ๊ท๋ชจ์ ๋ฐ์ดํฐ์
์ ๋ค๋ฃจ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ํ GCParallel Compaction
Parallel Collector๊ฐ major collection์
๋ณ๋ ฌ
๋ก ์ํํ๊ฒ ํด์ฃผ๋ ๊ธฐ๋ฅ-XX:+UseParallelGC
์ต์ ์ ์ง์ ํ๋ฉด Parallel Compaction์ด ๋ํดํธ๋ก ์ฌ์ฉ๋๋ค
but, multi thread๋ฅผ ์ฌ์ฉํ collection ์ฌ์ฉ์ด
Young
์์ญ์ ๊ตญํ๋๋คYoung Generation Collection ์๊ณ ๋ฆฌ์ฆ:
Parallel Scavenge
Old Generation Collection ์๊ณ ๋ฆฌ์ฆ:
Serial Mark-Sweep-Compact
G1 (Garbage First Collector)
Java 11์์ default GC๋ก ์ ์ฉ
ํฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์ง ๋ฉํฐ ํ๋ก์ธ์ ๋จธ์ ์ ์ํ Collector
-XX:+UseG1GC
์ต์ ์ผ๋ก G1 Collector๋ฅผ ์ผค ์ ์๋คG1 GC๋ง Generational GC๊ฐ ์๋๋ผ๋ ์ ์ ์ฃผ์ํด์ผํ๋ค
G1 collector๋ Young ์์ญ๊ณผ Old ์์ญ์ผ๋ก ๋๋์ง ์๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ ํน์ดํ collector์ด๋ค
G1์ ๋ฌผ๋ฆฌ์ generation ๊ตฌ๋ถ์ ์์ ๊ณ , ์ ์ฒด heap์ 1MB ๋จ์์ region๋ค๋ก ๋ค๋ฃฌ๋ค
๋ฐ๋ํ ๋ชจ์
์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ,์ฝ 2000๊ฐ
์ ๊ตฌ์ญ์ ์ฌ์ฉํ๋ค
G1 ์ด๋ผ๋ ์ด๋ฆ์ garbage๋ก ๊ฐ๋์ฐฌ region๋ถํฐ ์ปฌ๋ ์ ์ ์์ํ๋ค๋ ์๋ฏธ์ด๋ค
Garbage๋ก ๊ฝ ์ฐฌ region์ด ๋ฐ๊ฒฌ๋๋ฉด ๋ฐ๋ก collector๋ฅผ ๋๋ฆฐ๋ค.
Old region์ ์ด์์๋ ๊ฐ์ฒด๋ ๋ค๋ฅธ Old region์ผ๋ก ์ฎ๊ฒจ์ง๋ฉฐ, compaction์ด ์ด๋ค์ง๋ค
G1์์ Young, Old ์์ญ ๊ฐ๋ ์
๊ณ ์ ๋ ๊ฐ๋
์ด ์๋๋ค๊ฐ์ฒด๊ฐ
์๋ก ํ ๋น
๋๋ region๋ค์ ์งํฉ์ดYoung
generation ์ด๋คํ๋ก๋ชจ์
์ด ์ผ์ด๋๋ region์ ์งํฉ์ดOld
Generation ์ด๋ค
ZGC
Java 17์์ default GC๋ก ์ ์ฉ
ZGC๋ 8MB์์ 16TB ํฌ๊ธฐ์ heap์ ์ฒ๋ฆฌํ ์ ์๋ ํ์ฅ ๊ฐ๋ฅํ low-latency GC์ด๋ฉฐ -XX:+UseZGC
option์ ์ฌ์ฉํ์ฌ ํ์ฑํ ํ ์ ์๋ค
Low-latency
ZGC๋ memory collection์ ์ํด ์ผ์ ์ค๋จ์ ์ต์ํํ์ฌ ์๋ต์ฑ์ ๋์ธ๋ค
collection ์์ ์ ์ํํ๋ ๋์ application thread๋ ๊ณ์ ์คํ๋๋ concurrent GC์ด๋ฉฐ, ์ค๋จ ์๊ฐ์ ๋งค์ฐ ์งง๋ค
์ด๋ก ์ธํด ๋๊ท๋ชจ memory ํ๊ฒฝ์์๋ ๋์ ์๋ต์ฑ์ ์ ์งํ ์ ์๋ค
์ต๋ ์ง์ฐ ์๊ฐ์ 1๋ฐ๋ฆฌ์ด ๋ฏธ๋ง์ด๋ค
๋งค์ฐ ํฐ Heap ์ง์
ZGC๋ ์ 16TB์ ๋ฌํ๋ ํฐ heap์ ์ฒ๋ฆฌํ ์ ์๋ค
์ด๋ก ์ธํด ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ memory ์ง์ฝ์ ์ธ ์์ ์ ์ํํ๋ application์ ์ฌ์ฉํ๊ธฐ ์ข๋ค
๋ถ์ฐ์์ ์ธ ์์ง
ZGC๋ ์ ์ฒด heap์ ํ ๋ฒ์ ์์งํ๋ ๋์ , ์์ region ๋จ์๋ก ๋ถํ ํ์ฌ garbage collection์ ์ํํ๋ค
์์ง ์์ ์ ์ผ๋ถ๋ง์ ์ฒ๋ฆฌํ๋ฏ๋ก ์ผ์ ์ค๋จ ์๊ฐ์ ๋ถ์ฐ์ํฌ ์ ์๋ค
๋ณ๋ ฌ ์ฒ๋ฆฌ
ZGC๋ multi-thread๋ฅผ ํ์ฉํ์ฌ GC ์์ ์ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ๋ค
์ด๋ฅผ ํตํด GC ์์ ์ ํจ์จ์ ์ผ๋ก ๋ถ์ฐ์ํค๊ณ , ์ ์ฒด collection ์๊ฐ์ ๋จ์ถํ๋ค
ํจ์จ์ฑ
collection ์ค์ ํ์ ์ ๋ฆฌํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ํจ์จ์ ์ด๋ค
์ผ๋ฐ์ ์ธ GC๋ memory collection ์์ ์ ์ํํ๊ธฐ ์ํด
stop-the-world
๋ฅผ ๋ฐ์์ํจ๋ค์ด๋, application thread๋ค์ด ๋ชจ๋ ์ผ์ ์ค๋จ๋์ด GC ์์ ์ด ์ด๋ฃจ์ด์ง๋ค
์ด๋ฌํ ์ค์ง ์๊ฐ์ application ์๋ต์ฑ๊ณผ ์ฑ๋ฅ์ ์ํฅ์ ์ค ์ ์๋ค
๋ฐ๋ฉด ZGC๋ heap์ ์ ๋ฆฌํ๋ ๊ณผ์ ์์ ์ค์ง ์๊ฐ์ ๋งค์ฐ ์งง๊ฒ ์ ์งํ๋ค
ZGC๋ collection ์์ ์ค์๋ application thread๋ฅผ ๊ณ์ ์คํ์ํค๋ฉฐ, ํ์ํ ๊ฒฝ์ฐ์๋ง ๋งค์ฐ ์งง์ ์ค์ง ์๊ฐ์ ๋ฐ์์ํจ๋ค
ZGC๋ ์ผ์ ์ค๋จ ์๊ฐ์ ์ต์ํํ์ฌ application ์๋ต์ฑ์ ๋์ด๋๋ฐ ์ค์ ์ ์ค๋ค
Last updated
Was this helpful?