๐ป [Theory] Java์ GC(Garbage Collection)
๐ป [Theory] Java์ ๊ฐ๋น์ง ์ปฌ๋ ์ (Garbage Collection)
์๋
ํ์ธ์. ๐
์ค๋์ Java์ GC(Garbage Collection)์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
๊ฐ๋น์ง ์ปฌ๋ ์ (Garbage Collection)์ด๋?
ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐ ํ๋ค ๋ณด๋ฉด ์ ํจํ์ง ์์ ๋ฉ๋ชจ๋ฆฌ์ธ ๊ฐ๋ฐ์ง(Garbage)๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค. C์ธ์ด๋ฅผ ์ด์ฉํ๋ฉด free()๋ผ๋ ํจ์๋ฅผ ํตํด ์ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํด์ฃผ์ด์ผ ํ๋ค. ํ์ง๋ง Java๋ Kotlin ์ ์ด์ฉํด ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด ๊ฐ๋ฐ์๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ง์ ํด์ ํด์ฃผ๋ ์ผ์ด ์๋ค. ๊ทธ ์ด์ ๋ JVM์ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ๋ถํ์ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์์ ์ ๋ฆฌํด์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค. ๋์ Java์์ ๋ช ์์ ์ผ๋ก ๋ถํ์ํ ๋ฐ์ดํฐ๋ฅผ ํํํ๊ธฐ ์ํด์ ์ผ๋ฐ์ ์ผ๋ก null์ ์ ์ธํด์ค๋ค.
Minor GC์ Major GC
JVM์ Heap์์ญ์ ์ฒ์ ์ค๊ณ๋ ๋ ๋ค์์ โป2๊ฐ์ง๋ฅผ ์ ์ (Weak Generational Hypothesis)๋ก ์ค๊ณ๋์๋ค.
- ๋๋ถ๋ถ์ ๊ฐ์ฒด๋ ๊ธ๋ฐฉ ์ ๊ทผ ๋ถ๊ฐ๋ฅํ ์ํ(Unreachable)๊ฐ ๋๋ค.
- ์ค๋๋ ๊ฐ์ฒด์์ ์๋ก์ด ๊ฐ์ฒด๋ก์ ์ฐธ์กฐ๋ ์์ฃผ ์ ๊ฒ ์กด์ฌํ๋ค.
์ฆ, ๊ฐ์ฒด๋ ๋๋ถ๋ถ ์ผํ์ฑ๋๋ฉฐ, ๋ฉ๋ชจ๋ฆฌ์ ์ค๋ซ๋์ ๋จ์์๋ ๊ฒฝ์ฐ๋ ๋๋ฌผ๋ค๋ ๊ฒ์ด๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด์ ์์กด ๊ธฐ๊ฐ์ ๋ฐ๋ผ ๋ฌผ๋ฆฌ์ ์ธ Heap ์์ญ์ ๋๋๊ฒ ๋์๋๋ฐ, ์ด์ ๋ฐ๋ผ Young, Old ์ด 2๊ฐ์ง ์์ญ์ผ๋ก ์ค๊ณ๋์๋ค. (์ด๊ธฐ์๋ Perm ์์ญ์ด ์กด์ฌํ์์ง๋ง Java8๋ถํฐ ์ ๊ฑฐ๋์๋ค.)
gc ์์ญ ๋ฐ ํ๋ฆ
Young ์์ญ(Young Generation)
- ์๋กญ๊ฒ ์์ฑ๋ ๊ฐ์ฒด๊ฐ ํ ๋น(Allocation)๋๋ ์์ญ
- ๋๋ถ๋ถ์ ๊ฐ์ฒด๊ฐ ๊ธ๋ฐฉ Unreachable ์ํ๊ฐ ๋๊ธฐ ๋๋ฌธ์, ๋ง์ ๊ฐ์ฒด๊ฐ Young ์์ญ์ ์์ฑ๋์๋ค๊ฐ ์ฌ๋ผ์ง๋ค.
- Young ์์ญ์ ๋ํ ๊ฐ๋น์ง ์ปฌ๋ ์ (Garbage Collection)์ Minor GC๋ผ๊ณ ๋ถ๋ฅธ๋ค.
Old ์์ญ(Old Generation)
- Young์์ญ์์ Reachable ์ํ๋ฅผ ์ ์งํ์ฌ ์ด์๋จ์ ๊ฐ์ฒด๊ฐ ๋ณต์ฌ๋๋ ์์ญ
- ๋ณต์ฌ๋๋ ๊ณผ์ ์์ ๋๋ถ๋ถ Young ์์ญ๋ณด๋ค ํฌ๊ฒ ํ ๋น๋๋ฉฐ, ํฌ๊ธฐ๊ฐ ํฐ ๋งํผ ๊ฐ๋น์ง๋ ์ ๊ฒ ๋ฐ์ํ๋ค.
- Old ์์ญ์ ๋ํ ๊ฐ๋น์ง ์ปฌ๋ ์ (Garbage Collection)์ Major GC ๋๋ Full GC๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์์ธ์ ์ธ ์ํฉ์ผ๋ก Old ์์ญ์ ์๋ ๊ฐ์ฒด๊ฐ Young ์์ญ์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ ๊ฒฝ์ฐ๋ ์กด์ฌํ ๊ฒ์ด๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ Old ์์ญ์๋ 512 bytes์ ๋ฉ์ด๋ฆฌ(Chunk)๋ก ๋์ด ์๋ ์นด๋ ํ ์ด๋ธ(Card Table)์ด ์กด์ฌํ๋ค.
์นด๋ ํ ์ด๋ธ์๋ Old ์์ญ์ ์๋ ๊ฐ์ฒด๊ฐ Young ์์ญ์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ ๋ ๋ง๋ค ๊ทธ์ ๋ํ ์ ๋ณด๊ฐ ํ์๋๋ค. ์นด๋ ํ ์ด๋ธ์ด ๋์ ๋ ์ด์ ๋ ๊ฐ๋จํ๋ค. Young ์์ญ์์ ๊ฐ๋น์ง ์ปฌ๋ ์ (Minor GC)๊ฐ ์คํ๋ ๋ ๋ชจ๋ Old ์์ญ์ ์กด์ฌํ๋ ๊ฐ์ฒด๋ฅผ ๊ฒ์ฌํ์ฌ ์ฐธ์กฐ๋์ง ์๋ Young ์์ญ์ ๊ฐ์ฒด๋ฅผ ์๋ณํ๋ ๊ฒ์ด ๋นํจ์จ์ ์ด๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ Young ์์ญ์์ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ด ์งํ๋ ๋ ์นด๋ ํ ์ด๋ธ๋ง ์กฐํํ์ฌ GC์ ๋์์ธ์ง ์๋ณํ ์ ์๋๋ก ํ๊ณ ์๋ค.
๊ฐ๋น์ง ์ปฌ๋ ์ (Garbage Collection)์ ๋์ ๋ฐฉ์
Young ์์ญ๊ณผ Old ์์ญ์ ์๋ก ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ก ๋์ด ์๊ธฐ ๋๋ฌธ์, ์ธ๋ถ์ ์ธ ๋์ ๋ฐฉ์์ ๋ค๋ฅด๋ค. ํ์ง๋ง ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ๋น์ง ์ปฌ๋ ์ ์ด ์คํ๋๋ค๊ณ ํ๋ฉด ๋ค์์ 2๊ฐ์ง ๊ณตํต์ ์ธ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด๊ฒ ๋๋ค.
- Stop The World
- Mark and Sweep
์ถ๊ฐ๋ก โCompactโ ๋ผ๋ โSweepโ ํ ๋ถ์ฐ๋์ด์๋ ๊ฐ์ฒด๋ค์ Heap์ ์์ ์ฃผ์๋ก ๋ชจ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ ๋น๋ ๋ถ๋ถ๊ณผ ๊ทธ๋ ์ง ์์ ๋ถ๋ถ์ผ๋ก ๋๋๋ ๊ณผ์ ์ด ์๋ค. ๊ทธ๋ฆฌ๊ณ Compact ๊ณผ์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก โStop The Worldโ๋ฅผ ์ ๋ฐํ๋ค. ๋ฉ๋ชจ๋ฆฌ ๋จํธํ๋ฅผ ๋ฐฉ์งํ๋ค.
1. Stop The World
Stop The World๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์คํํ๊ธฐ ์ํด JVM์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํ์ ๋ฉ์ถ๋ ์์ ์ด๋ค. GC๊ฐ ์คํ๋ ๋๋ GC๋ฅผ ์คํํ๋ ์ฐ๋ ๋๋ฅผ ์ ์ธํ ๋ชจ๋ ์ฐ๋ ๋๋ค์ ์์ ์ด ์ค๋จ๋๊ณ , GC๊ฐ ์๋ฃ๋๋ฉด ์์ ์ด ์ฌ๊ฐ๋๋ค. ๋น์ฐํ ๋ชจ๋ ์ฐ๋ ๋๋ค์ ์์ ์ด ์ค๋จ๋๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฉ์ถ๊ธฐ ๋๋ฌธ์, GC์ ์ฑ๋ฅ ๊ฐ์ ์ ์ํด ํ๋์ ํ๋ค๊ณ ํ๋ฉด ๋ณดํต stop-the-world ์ ์๊ฐ์ ์ค์ด๋ ์์ ์ ํ๋ ๊ฒ์ด๋ค. ๋ํ JVM์์๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ค์ํ ์คํ ์ต์ ์ ์ ๊ณตํ๊ณ ์๋ค.
2. Mark and Sweep
Mark: ์ฌ์ฉ๋๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ์ฉ๋์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋งํน(์๋ณ)ํ๋ ์์ Sweep: Mark ๋จ๊ณ์์ ์ฌ์ฉ๋์ง ์์์ผ๋ก ์๋ณ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๋ ์์
Stop The World๋ฅผ ํตํด ๋ชจ๋ ์์ ์ ์ค๋จ์ํค๋ฉด, GC๋ ์คํ์ ๋ชจ๋ ๋ณ์ ๋๋ Reachable ๊ฐ์ฒด๋ฅผ ์ค์บํ๋ฉด์ ๊ฐ๊ฐ์ด ์ด๋ค ๊ฐ์ฒด๋ฅผ ์ฐธ๊ณ ํ๊ณ ์๋์ง๋ฅผ ํ์ํ๊ฒ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ๋๊ณ ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ณํ๋๋ฐ, ์ด๋ฌํ ๊ณผ์ ์ Mark๋ผ๊ณ ํ๋ค. ์ดํ์ Mark๊ฐ ๋์ง ์์ ๊ฐ์ฒด๋ค์ ๋ฉ๋ชจ๋ฆฌ์์ ์ ๊ฑฐํ๋๋ฐ, ์ด๋ฌํ ๊ณผ์ ์ Sweep๋ผ๊ณ ํ๋ค.
์ฌ๊ธฐ์ ์ฐธ์กฐ(์ฌ์ฉ)๋๊ณ ์๋ ๊ฒ์ Reachable ์ฐธ์กฐ(์ฌ์ฉ)๋์ง ์๋ ๊ฒ์ UnReachable ๋ผ๊ณ ํ๋ค.
Minor GC์ ๋์ ๋ฐฉ์
Minor GC๋ฅผ ์ ํํ ์ดํดํ๊ธฐ ์ํด์๋ Young ์์ญ์ ๊ตฌ์กฐ์ ๋ํด ์ดํด๋ฅผ ํด์ผ ํ๋ค. Young ์์ญ์ 1๊ฐ์ Eden ์์ญ๊ณผ 2๊ฐ์ Survivor ์์ญ, ์ด 3๊ฐ์ง๋ก ๋๋์ด์ง๋ค.
- Eden ์์ญ: ์๋ก ์์ฑ๋ ๊ฐ์ฒด๊ฐ ํ ๋น(Allocation)๋๋ ์์ญ
- Survivor ์์ญ: ์ต์ 1๋ฒ์ GC ์ด์ ์ด์๋จ์ ๊ฐ์ฒด๊ฐ ์กด์ฌํ๋ ์์ญ
๊ฐ์ฒด๊ฐ ์๋กญ๊ฒ ์์ฑ๋๋ฉด Young ์์ญ ์ค์์๋ Eden ์์ญ์ ํ ๋น(Allocation)์ด ๋๋ค. ๊ทธ๋ฆฌ๊ณ Eden ์์ญ์ด ๊ฝ ์ฐจ๋ฉด Minor GC๊ฐ ๋ฐ์ํ๊ฒ ๋๋๋ฐ, ์ฌ์ฉ๋์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ ํด์ ๋๊ณ Eden ์์ญ์ ์กด์ฌํ๋ ๊ฐ์ฒด๋ (์ฌ์ฉ์ค์ธ) Survivor ์์ญ์ผ๋ก ์ฎ๊ฒจ์ง๊ฒ ๋๋ค. Survivor ์์ญ์ ์ด 2๊ฐ์ด์ง๋ง ๋ฐ๋์ 1๊ฐ์ ์์ญ์๋ง ๋ฐ์ดํฐ๊ฐ ์กด์ฌํด์ผ ํ๋๋ฐ,Young ์์ญ์ ๋์ ์์๋ฅผ ์์ธํ ์ดํด๋ณด๋๋ก ํ์.
1.ใ์๋ก ์์ฑ๋ ๊ฐ์ฒด๊ฐ Eden ์์ญ์ ํ ๋น๋๋ค.
2.ใ๊ฐ์ฒด๊ฐ ๊ณ์ ์์ฑ๋์ด Eden ์์ญ์ด ๊ฝ์ฐจ๊ฒ ๋๊ณ Minor GC๊ฐ ์คํ๋๋ค.
- 2-1. Eden ์์ญ์์ ์ฌ์ฉ๋์ง ์๋ ๊ฐ์ฒด์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํด์ ๋๋ค.
- 2-2. Eden ์์ญ์์ ์ด์๋จ์ ๊ฐ์ฒด๋ 1๊ฐ์ Survivor ์์ญ์ผ๋ก ์ด๋๋๋ค.
3.ใ1~2๋ฒ์ ๊ณผ์ ์ด ๋ฐ๋ณต๋๋ค๊ฐ Survivor ์์ญ์ด ๊ฐ๋ ์ฐจ๊ฒ ๋๋ฉด Survivor ์์ญ์ ์ด์๋จ์ ๊ฐ์ฒด๋ฅผ ๋ค๋ฅธ Survivor ์์ญ์ผ๋ก ์ด๋์ํจ๋ค.(1๊ฐ์ Survivor ์์ญ์ ๋ฐ๋์ ๋น ์ํ๊ฐ ๋๋ค.)
4.ใ์ด๋ฌํ ๊ณผ์ ์ ๋ฐ๋ณตํ์ฌ ๊ณ์ํด์ ์ด์๋จ์ ๊ฐ์ฒด๋ Old ์์ญ์ผ๋ก ์ด๋(Promotion)๋๋ค.
๊ฐ์ฒด์ ์์กด ํ์๋ฅผ ์นด์ดํธํ๊ธฐ ์ํด Minor GC์์ ๊ฐ์ฒด๊ฐ ์ด์๋จ์ ํ์๋ฅผ ์๋ฏธํ๋ age๋ฅผ Object Header์ ๊ธฐ๋กํ๋ค. ๊ทธ๋ฆฌ๊ณ Minor GC ๋ Object Header์ ๊ธฐ๋ก๋ age๋ฅผ ๋ณด๊ณ Promotion ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ค. ๋ํ Survivor ์์ญ ์ค 1๊ฐ๋ ๋ฐ๋์ ์ฌ์ฉ์ด ๋์ด์ผ ํ๋ค. ๋ง์ฝ ๋ Survivor ์์ญ์ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๊ฑฐ๋, ๋ชจ๋ ์ฌ์ฉ๋์ด 0์ด๋ผ๋ฉด ํ์ฌ ์์คํ ์ด ์ ์์ ์ธ ์ํฉ์ด ์๋์ ํ์ ํ ์ ์๋ค.
์ด๋ฌํ ์งํ ๊ณผ์ ์ ๊ทธ๋ฆผ์ผ๋ก ์ดํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
HotSpot JVM์์๋ Eden ์์ญ์ ๊ฐ์ฒด๋ฅผ ๋น ๋ฅด๊ฒ ํ ๋น(Allocation)ํ๊ธฐ ์ํด bump the pointer์ TLABs(Thread-Local Allocation Buffers)๋ผ๋ ๊ธฐ์ ์ ์ฌ์ฉํ๊ณ ์๋ค. bump the pointer ๋ Eden ์์ญ์ ๋ง์ง๋ง์ผ๋ก ํ ๋น๋ ๊ฐ์ฒด์ ์ฃผ์๋ฅผ ์บ์ฑํด๋๋ ๊ฒ์ด๋ค. bump the pointer๋ฅผ ํตํด ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์ํด ์ ํจํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ํ ํ์ ์์ด ๋ง์ง๋ง ์ฃผ์์ ๋ค์ ์ฃผ์๋ฅผ ์ฌ์ฉํ๊ฒ ํจ์ผ๋ก์จ ์๋๋ฅผ ๋์ด๊ณ ์๋ค. ์ด๋ฅผ ํตํด ์๋ก์ด ๊ฐ์ฒด๋ฅผ ํ ๋นํ ๋ ๊ฐ์ฒด์ ํฌ๊ธฐ๊ฐ Eden ์์ญ์ ์ ํฉํ์ง๋ง ํ๋ณํ๋ฉด ๋๋ฏ๋ก ๋น ๋ฅด๊ฒ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ํ ์ ์๋ค.
์ฑ๊ธ ์ฐ๋ ๋ ํ๊ฒฝ์ด๋ผ๋ฉด ๋ฌธ์ ๊ฐ ์๊ฒ ์ง๋ง ๋ฉํฐ์ฐ๋ ๋ ํ๊ฒฝ์ด๋ผ๋ฉด ๊ฐ์ฒด๋ฅผ Eden ์์ญ์ ํ ๋นํ ๋ ๋ฝ(Lock)์ ๊ฑธ์ด ๋๊ธฐํ๋ฅผ ํด์ฃผ์ด์ผ ํ๋ค. ๋ฉํฐ ์ฐ๋ ๋ ํ๊ฒฝ์์์ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด HotSpot JVM์ ์ถ๊ฐ๋ก TLABs(Thread-Local Allocation Buffers)๋ผ๋ ๊ธฐ์ ์ ๋์ ํ๊ฒ ๋์๋ค.
TLABs(Thread-Local Allocation Buffers)๋ ๊ฐ๊ฐ์ ์ฐ๋ ๋๋ง๋ค Eden ์์ญ์ ๊ฐ์ฒด๋ฅผ ํ ๋นํ๊ธฐ ์ํ ์ฃผ์๋ฅผ ๋ถ์ฌํจ์ผ๋ก์จ ๋๊ธฐํ ์์ ์์ด ๋น ๋ฅด๊ฒ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋๋ก ํ๋ ๊ธฐ์ ์ด๋ค. ๊ฐ๊ฐ์ ์ฐ๋ ๋๋ ์์ ์ด ๊ฐ๋ ์ฃผ์์๋ง ๊ฐ์ฒด๋ฅผ ํ ๋นํจ์ผ๋ก์จ ๋๊ธฐํ ์์ด bump the poitner๋ฅผ ํตํด ๋น ๋ฅด๊ฒ ๊ฐ์ฒด๋ฅผ ํ ๋นํ๋๋ก ํ๊ณ ์๋ค.
Major GC์ ๋์ ๋ฐฉ์
- Young ์์ญ์์ ์ค๋ ์ด์๋จ์ ๊ฐ์ฒด๋ Old ์์ญ์ผ๋ก Promotion ๋จ์ ํ์ธํ ์ ์์๋ค.
- Major GC๋ ๊ฐ์ฒด๋ค์ด ๊ณ์ Promotion๋์ด Old ์์ญ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํด์ง๋ฉด ๋ฐ์ํ๊ฒ ๋๋ค.
- Young ์์ญ์ ์ผ๋ฐ์ ์ผ๋ก Old ์์ญ๋ณด๋ค ํฌํค๊ฐ ์๊ธฐ ๋๋ฌธ์ GC๊ฐ ๋ณดํต 0.5์ด์์ 1์ด ์ฌ์ด์ ๋๋๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ Minor GC๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํฌ๊ฒ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
- ํ์ง๋ง Old ์์ญ์ Young ์์ญ๋ณด๋ค ํฌ๋ฉฐ Young ์์ญ์ ์ฐธ์กฐํ ์๋ ์๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ Major GC๋ ์ผ๋ฐ์ ์ผ๋ก Minor GC๋ณด๋ค ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๋ฉฐ, 10๋ฐฐ ์ด์์ ์๊ฐ์ ์ฌ์ฉํ๋ค.
๊ฐ๋น์ง ์ปฌ๋ ์ ๋น๊ต ์์ฝ
๊ฐ๋น์ง ์ปฌ๋ ์ ์๊ณ ๋ฆฌ์ฆ์ ์ข ๋ฅ
๊ธฐ๋ณธ์ ์ธ ๊ฐ๋น์ง ์ฝ๋ ์ ๊ณผ์ ์ ๋ํด ์์๋ณด์๋ค. ํํธ ๊ฐ๋น์ง ์ฝ๋ ํฐ๋ ๋ค์๊ณผ ๊ฐ์ 5๊ฐ์ ์ข ๋ฅ๊ฐ ์กด์ฌํ๊ณ ์ํฉ์ ๋ฐ๋ผ ํ์ํ ๊ฐ๋น์ง ์ฝ๋ ํฐ๋ฅผ ์ ํํด์ ์ฌ์ฉํ ์ ์๋ค.
- Serial GC
- Palleral GC
- Palleral Old GC
- CMS GC (Concurrent Mark Sweep)
- G1 GC (Garbage First)
๋
Java์ ๊ฐ๋น์ง ์ปฌ๋ ์
(Garbage Collection)์ ๋ํด ์์๋ณด์์ต๋๋ค.
Reference