C/C++์ ๊ฒฝ์ฐ ํ๋ก๊ทธ๋๋ฐ์ ํ ๋ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๋ง๊ธฐ ์ํด ์ฌ์ฉํ์ง ์๋ ๊ฐ์ฒด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ๋ฐ์๊ฐ ์ง์ ํด์ ํด์ค์ผ ํ๋ค. ํ์ง๋ง Java์์๋ ๊ทธ ์ญํ ์ ๋ค๋ฅธ ๋๊ฐ ํด์ค๋ค. ๋ฐ๋ก Garbage Collection , GC์ด๋ค.
GC ๋ JVM ์์์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๋ฐ์ดํฐ๊ฐ ํ ๋น๋์ด์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ์์ผ์ฃผ๋ ์ฅ์น์ด๋ค. JVM์์ ์๋์ผ๋ก ๋์ํ๊ธฐ ๋๋ฌธ์ Java๋ฅผ ์ฌ์ฉํ ๋ ํน๋ณํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ๊ฐ๋ฐ์๊ฐ ์ง์ ํด์ค ํ์๊ฐ ์๋ค.(System.gc()๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ช
์์ ์ผ๋ก ํด์ ํ ๊ฒฝ์ฐ ์์คํ
์ฑ๋ฅ์ ๋งค์ฐ ํฐ ์ํฅ์ ๋ผ์น๋ฏ๋ก ์ฌ์ฉํ์ง ์๋๋ก ํ์)
๋ฃ์ํ๋ GC๋ ๊ฐ๋ฐ์์ ๊ด๋ฆฌ ๋ฒ์๋ฅผ ์ค์ฌ์ฃผ๊ณ ์ข๋ ๋ก์ง์ ์ง์คํ ์ ์๊ฒ ๋์์ฃผ๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด ์ข์ GC๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ฉด ํ ์๋ก ์ข์๊น?
์์ํ์ง๋ง ๊ทธ๋ ์ง ์๋ค. GC์ ์๋์ 'stop-the-world'๋ผ๋ ์ฉ์ด๋ก ์ค๋ช
๋๋ค.
stop-the-world๋, GC์ ์คํํ๊ธฐ ์ํด JVM์ด ์ ํ๋ฆฌ์ผ์ด์
์คํ์ ๋ฉ์ถ๋ ๊ฒ์ด๋ค. stop-the-world๊ฐ ๋ฐ์ํ๋ฉด GC๋ฅผ ์คํํ๋ ์ฐ๋ ๋๋ฅผ ์ ์ธํ ๋๋จธ์ง ์ฐ๋ ๋๋ ๋ชจ๋ ์์
์ ๋ฉ์ถ๋ค. GC ์์
์ ์๋ฃํ ์ดํ์์ผ ์ค๋จํ๋ ์์
์ ๋ค์ ์์ํ๋ค.
์ฆ, GC๋ฅผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์๋ ๋ฌด์์ GC๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋๋ผ stop-the-world ์๊ฐ์ ์ค์ด๋ ๋ฐฉํฅ์ผ๋ก GC๋ฅผ ์ฌ์ฉํด์ผํ๊ณ GCํ๋์ด๋ ์ด ์๊ฐ์ ์ค์ด๋ ๊ฒ์ ์ด์ผ๊ธฐํ๋ค.
๊ทธ๋ ๋ค๋ฉด GC๋ ์ด๋ป๊ฒ ์ฐธ์กฐ๋์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐพ์๊น? ๊ฐ์ฅ ์์ด์ ์ธ ๋ฐฉ์์ด 'mark-sweep-compact' ๋ฐฉ์์ด๋ค. mark-sweep-compact๋ ์ด๋ฆ ๊ทธ๋๋ก mark, sweep, compact 3๋จ๊ณ๋ก ์ด๋ค์ง๋ ๋ฐฉ์์ด๋ค.
ํ์ง๋ง mark-sweep-compact ๋ฐฉ์์ ์๊ฐ๋ ์ค๋ ๊ฑธ๋ฆฌ๊ณ ๋นํจ์จ์ ์ด๋ค. ์๋์ ๊ทธ๋ํ๋ฅผ ๋ณด๋ฉด Y์ถ์ ํ ๋น๋ ๋ฐ์ดํธ์ ์์ด๊ณ X์ถ์ ๋ฐ์ดํธ๊ฐ ํ ๋น๋ ๋์ ์๊ฐ์ด๋ค. ๊ทธ๋ํ ์์์ ์๊ฐ์ด ์ง๋ ์๋ก ์ ์ ๊ฐ์ฒด๋ง ์ด์๋จ๋๋ค๋ ์ฌ์ค์ ํ์ธํ ์ ์๋ค.
์ฆ, ๊ฐ์ฒด ๋ง๋ค ์ ์ง๋ ์๊ฐ์ ๋ฐ๋ผ ์ฐธ์กฐ๊ฐ ํด์ ๋ ๊ฐ๋ฅ์ฑ์ด ๋ฌ๋ฆฌ์ง๋ ์ด ํน์ฑ์ ์ด์ฉํ์ฌ ๋ ํจ์จ์ ์ธ GC ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ ๊ฒ์ด๋ค.
์์์ ํ์ธํ ๊ทธ๋ํ๋ฅผ ํ ๋๋ก ๋ง๋ค์ด์ง ๊ฐ์ค์ด Weak Generational Hypothesis์ด๋ค. ํด๋น ๊ฐ์ค์ ๋ค์๊ณผ ๊ฐ์ ๊ฐ์ค์ ํฌํจํ๊ณ ์๋ค.
Weak Generational Hypothesis์ ์ฅ์ ์ ์ต๋ํ ์ด๋ฆฌ๊ธฐ ์ํด์ HotSpot VM์์๋ ํฌ๊ฒ 2๊ฐ๋ก ๋ฌผ๋ฆฌ์ ๊ณต๊ฐ์ ๋๋์๋ค. ๋๋ก ๋๋ ๊ณต๊ฐ์ด Heap์ Young ์์ญ๊ณผ Old ์์ญ์ด๋ค.
Minor GC๊ฐ ์ํ๋๋ Young ์์ญ์ ๋ค์๊ณผ ๊ฐ์ด 3๊ฐ์ ์์ญ์ผ๋ก ๋๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ๊ฐ๋์ฐจ๋ ์์ ์ด GC ์ํ์ ์์ ์ด ๋๋ค.
Minor GC์ ์ํ ์ ์ฐจ๋ ๋ค์๊ณผ ๊ฐ๋ค
[ Minor GC ]
- ์๋ก ์์ฑํ ๋๋ถ๋ถ์ ๊ฐ์ฒด๋ Eden ์์ญ์ ์์นํ๋ค.
- Eden ์์ญ์์ GC๊ฐ ํ ๋ฒ ๋ฐ์ํ ํ ์ด์๋จ์ ๊ฐ์ฒด๋ Survivor ์์ญ ์ค ํ๋๋ก ์ด๋๋๋ค.
- Eden ์์ญ์์ GC๊ฐ ๋ฐ์ํ๋ฉด ์ด๋ฏธ ์ด์๋จ์ ๊ฐ์ฒด๊ฐ ์กด์ฌํ๋ Survivor ์์ญ์ผ๋ก ๊ฐ์ฒด๊ฐ ๊ณ์ ์์ธ๋ค.
- ํ๋์ Survivor ์์ญ์ด ๊ฐ๋ ์ฐจ๊ฒ ๋๋ฉด ๊ฐ๋์ฐฌ Survivor ์์์ GC๋ฅผ ์ํํ๊ณ , ์ด์๋จ์ ๊ฐ์ฒด๋ฅผ ๋ค๋ฅธ Survivor ์์ญ์ผ๋ก ์ด๋ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ ์ฐฌ Survivor ์์ญ์ ์๋ฌด ๋ฐ์ดํฐ๋ ์๋ ์ํ๋ก ๋๋ค.
- ์ด ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค๊ฐ age threshold(๋ฌธ์ง๋ฐฉ) ์ด์์ผ๋ก ์ด์๋จ์ ์๋ ๊ฐ์ฒด๋ Old ์์ญ์ผ๋ก ์ด๋ํ๊ฒ ๋๋ค.
์ ๊ทธ๋ฆผ์์๋ ํ์ธํ ์ ์์ง๋ง Minor GC ๊ณผ์ ์์ Survivor ์์ญ ์ค ํ๋๋ ๋ฐ๋์ ๋น์ด ์๋ ์ํ๋ก ๋จ์ ์์ด์ผ ํ๋ค. ๋ง์ฝ ๋ Survivor ์์ญ์ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๊ฑฐ๋, ๋ ์์ญ ๋ชจ๋ ์ฌ์ฉ๋์ด 0์ด๋ผ๋ฉด ๋ฌด์ธ๊ฐ ์๋ชป๋๊ณ ์๋ค๊ณ ์๊ฐํด์ผ ํ๋ค.
HotSpot VM์์๋ ๋ณด๋ค ๋น ๋ฅธ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์ํด์ bump-the-pointer์ TLABs(Thread-Local Allocation Buffers) ๋ผ๋ ๊ธฐ์ ์ ์ถ๊ฐ๋ก ์ฌ์ฉํ๋ค.
bump-the-pointer
bump-the-pointer๋ Eden ์์ญ์ ํ ๋น๋ ๋ง์ง๋ง ๊ฐ์ฒด๋ฅผ ์ถ์ ํ๋ค. ๋ง์ง๋ง ๊ฐ์ฒด๋ Eden ์์ญ์ ๋งจ ์(top)์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๋ค์์ ์์ฑ๋๋ ๊ฐ์ฒด๊ฐ ์์ผ๋ฉด, ํด๋น ๊ฐ์ฒด์ ํฌ๊ธฐ๊ฐ Eden ์์ญ์ ๋ฃ๊ธฐ ์ ๋นํ์ง๋ง ํ์ธํ๋ค. ๋ง์ฝ ํด๋น ๊ฐ์ฒด์ ํฌ๊ธฐ๊ฐ ์ ๋นํ๋ค๊ณ ํ์ ๋๋ฉด Eden ์์ญ์ ๋ฃ๊ฒ ๋๊ณ , ์๋ก ์์ฑ๋ ๊ฐ์ฒด๊ฐ ๋งจ ์์ ์๊ฒ ๋๋ค.
๋ฐ๋ผ์, ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ๋ง์ง๋ง์ ์ถ๊ฐ๋ ๊ฐ์ฒด๋ง ์ ๊ฒํ๋ฉด ๋๋ฏ๋ก ๋งค์ฐ ๋น ๋ฅด๊ฒ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด ์ด๋ฃจ์ด์ง๋ค.
TLABs(Thread-Local Allocation Buffers)
๋ง์ฝ bump-the-pointer๋ฅผ ๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์์ ์ฌ์ฉํ๋ค๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ์ฌ๋ฌ ์ค๋ ๋์์ ์ฌ์ฉํ๋ ๊ฐ์ฒด๋ฅผ Thread-Safeํ๊ฒ Eden ์์ญ์ ์ ์ฅํ๊ณ ์ถ์ ํ๋ ค๋ฉด ๋ฝ(lock)์ด ๋ฐ์ํ ์ ๋ฐ์ ์๊ณ , lock-contention ๋๋ฌธ์ ์ฑ๋ฅ์ ๋งค์ฐ ๋จ์ด์ง๊ฒ ๋ ๊ฒ์ด๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด TLAB๋ ์ค๋ ๋๊ฐ ๊ฐ๊ฐ์ ๋ชซ์ ํด๋นํ๋ Eden ์์ญ์ ์์ ๋ฉ์ด๋ฆฌ๋ฅผ ๊ฐ์ง ์ ์๋๋ก ํ์ฌ ์๊ธฐ๊ฐ ๊ฐ๊ณ ์๋ ๋ฉ์ด๋ฆฌ์๋ง ์ ๊ทผํ ์ ์๊ฒ ๋ถ๋ฆฌํ๋ค. TLAB๋ฅผ ์ฌ์ฉํ๋ฉด bump-the-pointer๋ฅผ ์ฌ์ฉํ๋๋ผ๋ ๋ฝ ์์ด ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด ๊ฐ๋ฅํ๋ค.
Old ์์ญ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ๊ฐ๋ ์ฐจ๋ฉด GC๋ฅผ ์คํํ๋ค. ์ด๋ ์ด๋ค GC ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋์ ๋ฐ๋ผ ๊ณผ์ ์ด ๋ฌ๋ฆฌ์ง๋๋ฐ JDK 7 ๊ธฐ์ค์ผ๋ก ์๋์ ๊ฐ์ด 5๊ฐ์ง ๋ฐฉ์์ด ์กด์ฌํ๋ค.
์์ ์ดํด๋ณธ mark-sweep-compact ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ GC์ด๋ค. JDK 5,6 ์์ ์ฌ์ฉ๋๋ GC๋ก Minor GC์ Major GC ๋ชจ๋ ์ฑ๊ธ์ค๋ ๋๋ก ์ํํ๊ธฐ ๋๋ฌธ์ GC๊ฐ ์งํ๋๋ ์๊ฐ(Stop-The-World)์ด ๋ค๋ฅธ GC์ ๋นํด ์ค๋ ๊ฑธ๋ฆฐ๋ค. ์ด์ ์๋ฒ์์ ์ฌ์ฉํ๋ฉด ์๋๋ ๋ฐฉ์์ด๋ค.
Serial GC์ ๋์ผํ๊ฒ mark-sweep-compact ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ง๋ง, Young ์์ญ์์ ๋ฐ์ํ๋ Minor GC ์ํ์ ๋ฉํฐ ์ค๋ ๋๋ฅผ ์ฌ์ฉํ๋ค. ๋ฐ๋ผ์ Serial GC๋ณด๋ค ๋น ๋ฅด๊ฒ ๊ฐ์ฒด๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค. ํ์ง๋ง ์ฌ์ฉํ๋ ์ฅ๋น์ CPU๊ฐ ๋จ์ผ ์ฝ์ด์ธ ๊ฒฝ์ฐ Parallel GC๋ก ์ค์ ํด๋ Serial GC๋ก ์ํ๋๋ค.
JDK 5 update 6๋ถํฐ ์ ๊ณตํ GC ๋ฐฉ์์ผ๋ก Parallel GC์ Young ์์ญ์ ๋์ ๋ฐฉ์์ ๋์ผํ๋ค. ํ์ง๋ง Old ์์ญ์์ ๋ฐ์ํ๋ Full GC๋ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ๋ฉฐ, Old ์์ญ์์ ๋ฐ์ํ๋ GC๋ฅผ ์ฒ๋ฆฌํ ๋ Mark-Summary-Compaction ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ๋ค. Summary ๋จ๊ณ๋ ์์ GC๋ฅผ ์ํํ ์์ญ์ ๋ํด์ ๋ณ๋๋ก ์ด์ ์๋ ๊ฐ์ฒด๋ฅผ ์๋ณํ๋ค๋ ์ ์์ Mark-Sweep-Compaction ์๊ณ ๋ฆฌ์ฆ์ Sweep ๋จ๊ณ์ ๋ค๋ฅด๋ฉฐ, ์ฝ๊ฐ ๋ ๋ณต์กํ ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ค.
CMS GC๋ Old ์์ญ์์ ๋ฐ์ํ๋ Full GC์ ์ํ์๊ฐ์ ์ต์ํ์ผ๋ก ํ๋๋ฐ ์ด์ ์ ๋ GC ๋ฐฉ์์ด๋ค. ์ฆ Stop-The-World์ ์๊ฐ์ ์ต์ํ ํ๋ค. ์๋ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ๋ค
- Initial Mark : ํด๋์ค ๋ก๋์์ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฐ์ฒด ์ค ์ด์ ์๋ ๊ฐ์ฒด๋ง ์ฐพ๋๋ค.
- Concurrent Mark(STW ๋ฐ์X) : Initial ๊ณผ์ ์์ ์ฐพ์ ๊ฐ์ฒด์์ ์ฐธ์กฐํ๊ณ ์๋ ๊ฐ์ฒด๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉด์ ํ์ธํ๋ค. ํด๋น ๊ณผ์ ์ ๋ค๋ฅธ ์ค๋ ๋๊ฐ ์งํํ๋ ๊ณผ์ ์์ ๋์์ ์งํ๋๋ค.
- Remark : Concurrent ๊ณผ์ ์์ ์๋ก ์ถ๊ฐ๋๊ฑฐ๋ ์ฐธ์กฐ๊ฐ ๋๊ธด ๊ฐ์ฒด๋ฅผ ํ์ธํ๋ค.
- Concurrent Sweep(STW ๋ฐ์X) : ์ฐ๋ ๊ธฐ๋ฅผ ์ ๋ฆฌํ๋ ์์ ์ ์คํํ๋ค. ํด๋น ๊ณผ์ ๋ ๋ค๋ฅธ ์ค๋ ๋๊ฐ ์งํํ๋ ๊ณผ์ ์์ ๋์์ ์งํ๋๋ค.
CMS GC๋ฐฉ์์ ์์์ ํ์ธํ ๊ฒ์ฒ๋ผ Initial Mark ๊ณผ์ ๊ณผ Remark ๊ณผ์ ๋ง stop-the-world๊ฐ ๋ฐ์ํ๋ฏ๋ก stop-the-world ์๊ฐ์ด ๋งค์ฐ ์งง๋ค. ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ต ์๋๊ฐ ๋งค์ฐ ์ค์ํ ๋ CMS GC๋ฅผ ์ฌ์ฉํ๋ฉฐ, Low Latency GC๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค.
์๊ฐ์ ๋งค์ฐ ์งง์ง๋ง CMS GC์๋ ๋จ์ ์ด ์กด์ฌํ๋ค.
- ๋ค๋ฅธ GC ๋ฐฉ์๋ณด๋ค ๋ฉ๋ชจ๋ฆฌ์ CPU๋ฅผ ๋ ๋ง์ด ์ฌ์ฉํ๋ค.
- Compaction ๋จ๊ณ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋์ง ์๋๋ค.
์ฆ, ๋ฉ๋ชจ๋ฆฌ ๋จํธํ์ ๋ํ ์ฐ๋ ค๊ฐ ์๋ค. ๋ง์ฝ ์ฐ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด ๋ถ๊ฐ๋ฅํ ์ ๋๋ก ๋ฉ๋ชจ๋ฆฌ ๋จํธํ๊ฐ ์งํ๋์๋ค๋ฉด Compaction ์์ ์ ์ํํด์ผ ํ๋๋ฐ, ํด๋น ์์ ์ ๋ค๋ฅธ GC์์์ Compaction ์์ ์ ๋นํด stop-the-world ์๊ฐ์ด ๊ธธ๋ค. ๋ฐ๋ผ์ CMS GC๋ฅผ ์ฌ์ฉํ ๋๋ Compaction ์์ ์ด ์ผ๋ง๋ ์ผ์ด๋๋์ง ํ์ ํ ํ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
๊ธฐ์กด GC์๊ณ ๋ฆฌ์ฆ ๋ค๋ก๋ ํฐ ๋ฉ๋ชจ๋ฆฌ์์ ์ข์ ์ฑ๋ฅ์ ๋ด๊ธฐ ํ๋ค์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ๊ฐ์ ํ๊ณ ์ ๋ฑ์ฅํ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. G1 GC ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ์กด์ ์ ํํ๋ Heap ๊ตฌ์กฐ๊ฐ ์๋ Heap์ Region์ด๋ผ๋ ๋ ผ๋ฆฌ์ ์ธ ๋จ์๋ก ๋๋ ์ ๊ด๋ฆฌํ๋ฉฐ ๊ฐ๊ฐ์ Region์ ํน์ ์ญํ (Eden,Survivor,Old,Humonogous)์ ๋์ ์ผ๋ก ๋ถ์ฌํ๋ค.
JVM Heap์ 2048๊ฐ์ Region์ผ๋ก ๋๋ ์ ์์ผ๋ฉฐ, ๊ฐ Region์ ํฌ๊ธฐ๋ 1MB ~ 32MB ์ฌ์ด๋ก ์ง์ ๋๋ค.
์ ์ญํ ์ค Humonogous๋ Region ํฌ๊ธฐ์ 50%๋ฅผ ์ด๊ณผํ๋ ๊ฐ์ฒด๊ฐ ์ ์ฅ๋๋ ๊ณต๊ฐ์ด๋ฉฐ, ์ด ๊ณต๊ฐ์์๋ GC๊ฐ ํจ์จ์ ์ผ๋ก ์ผ์ด๋์ง ์๋ ์์ญ์ด๋ค.
G1 GC์์ Young GC ๋ฅผ ์ํํ ๋๋ stop-the-world ํ์์ด ๋ฐ์ํ๋ฉฐ, stop-the-world ์๊ฐ์ ์ต๋ํ ์ค์ด๊ธฐ ์ํด ๋ฉํฐ์ค๋ ๋๋ก GC๋ฅผ ์ํํ๋ค. Young GC๋ ๊ฐ Region ์ค GC๋์ ๊ฐ์ฒด๊ฐ ๊ฐ์ฅ ๋ง์ Region(Eden ๋๋ Survivor ์ญํ )์์ ์ํ ๋๋ฉฐ, ์ด Region ์์ ์ด์๋จ์ ๊ฐ์ฒด๋ฅผ ๋ค๋ฅธ Region(Survivor ์ญํ ) ์ผ๋ก ์ฎ๊ธด ํ, ๋น์์ง Region์ ์ฌ์ฉ๊ฐ๋ฅํ Region์ผ๋ก ๋๋ฆฌ๋ ํํ ๋ก ๋์ํ๋ค.
G1 GC๋ CMS GC์ ๋ค๋ฅด๊ฒ Compaction ๋จ๊ณ๋ฅผ ์งํํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋จํธํ ๋ฌธ์ ๋ฅผ ์์ด๋ค. ๋ํ stop-the-world ์๊ฐ์ ์์ธกํ ์ ์๋ค.
๋ค์ ๊ธ์์๋ GC๊ฐ ํ๋ณํ๋ ๊ฐ์ฒด์ ๋ํด ๋ค๋ค๋ณด๊ฒ ๋ค.
์ฐธ๊ณ ์๋ฃ
Java Garbage Collection _ NAVER D2
JVM์ ๊ดํ์ฌ - Part 4, Garbage Collection ๊ธฐ์ด _ Tecoble
Java Platform, Standard Edition HotSpot Virtual Machine Garbage Collection Tuning Guide _ Oracle Java 8