๊ฐ๋น์ง ์ฝ๋ ์ ์ด๋?
ํ์ ์๋ ์ ์ฐ๋ ๊ฐ์ฒด๋ค์ ์๋ฐ๊ฐ ์์์ ์ฒญ์ํด ์ฃผ๋ ๊ฒ์ด๋ผ๊ณ ์๊ณ ์์๋๋ฐ ๊ฒ์์ ํด๋ณด๋...... ์ด๋ ๊ฒ ์ฝ๊ฒ ๋๋ผ ์ ์๋ GC๊ฐ ์๋์๋ค..๐ฅ
Garbage Collection์ด๋?
๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ฐธ์กฐ(reference)๋์ง ์๋ ๊ฐ์ฒด๋ค์ ์ ๋ฆฌํด ์ค์ RAM์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ๋ณดํ๋ค. ์ ํํ๋ Heap ์์ญ์ธ๋ฐ, ๋ชจ๋ ๊ฐ์ฒด๋ Heap์ ์์ฑ๋๊ธฐ ๋๋ฌธ์ด๋ค.
์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋ํ ๋ ๊ณ ๋ คํด์ผ ํ ์ฌํญ์ผ๋ก ๋ ๊ฐ์ง๊ฐ ์๋๋ฐ ์ฒซ ๋ฒ์งธ๋ก๋ Responsiveness, ๋ ๋ฒ์งธ๋ Throughput์ด๋ค. ์ค๋ช ์ ํ์๋ฉด, Responsiveness๋ ์ผ๋ง๋ ๋น ๋ฅธ ์๊ฐ ์์ ์์ฒญํ ๋ฐ์ดํฐ์ ๋ํด ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ตํ๋๊ฐ์ด๊ณ Throughput์ ์ฃผ์ด์ง ์๊ฐ ๋ด์ ์ฒ๋ฆฌํ ์ ์๋ ์์ ์ด์ ์ ๋ง์ถ๊ณ ์์ด ๋น ๋ฅธ ์๋ต ์๊ฐ์ ์ค์ ๊ณ ๋ ค ๋์์ด ์๋๋ค.
๊ฐ๋น์ง ์ฝ๋ ํฐ์ ๊ธฐ๋ณธ ๋์๋ฐฉ์
1. Marking : ๊ฐ๋น์ง ์ฝ๋ ํฐ๊ฐ ์ฌ์ฉ๋๊ณ ์๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ์ฉ๋์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ตฌ๋ถํ๋ ๋จ๊ณ (์๊ฐ์ด ๋ง์ด ์์๋จ)

2. Normal Deletion : ๋ฏธ์ฐธ์กฐ ๊ฐ์ฒด ์ญ์

3. Deletion with Compacting : Normal Deletion์์ ์ฑ๋ฅ์ ์ข ๋ ๊ฐ์ ํ ๊ฒ์ผ๋ก ์์ง ์ด์์๋ ์๋ ๊ฐ์ฒด๋ฅผ ํ ๊ณณ์ผ๋ก(๋น ๊ณต๊ฐ์ด ์๋๋ก) ๋ชจ์๋ค. ์ด ๊ฒฝ์ฐ, ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ ๊ฒ์ด ๋ ธ๋ฉ๋ณด๋ค ํจ์ฌ ๋ ์ฝ๊ณ ๋น ๋ฅด๋ค.

์ฒซ ๋ฒ์งธ ๋จ๊ณ Marking์์ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ๋ค ํ์ธํ๋ ๊ฒ์ ์๊ฐ์ด ๋ง์ด ์์๋๋ฉฐ ๋นํจ์จ์ ์ด๋ค. ์ด๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด JVM์ ๋๋ค์์ ๊ฐ์ฒด์ ์๋ช ์ ์งง๋ค๋ ์ฌ์ค์ ๊ทผ๊ฑฐํ์ฌ ํ์ ๊ตฌ์กฐ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋๋์๋ค.

Young Generation : ์๋ก์ด ๊ฐ์ฒด๊ฐ ์ ์ฅ๋จ. ๊ณต๊ฐ์ด ๋ค ์ฐจ๋ฉด minor gc ๋ฐ์
Stop the World Event : minor gc๊ฐ ๋๋ ๋๊น์ง ์ฐ๋ ๋๊ฐ ๋ฉ์ถค. -> ์ฑ๋ฅ์ด ๋จ์ด์ง
Old Generation : ์ค๋๋ ๊ฐ์ฒด ์ ์ฅ. -> ๊ณต๊ฐ์ด ํ์ํ ๊ฒฝ์ฐ major gc ๋ฐ์
Permanent Generation : JVM์ด ํ์ํ ๋ฉํ๋ฐ์ดํฐ ์ ์ฅ
- JDK 8๋ถํฐ๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ Metaspace์ ์ ์ฅํจ
The Generational Garbage Collection Process
- ์๋ก์ด ๊ฐ์ฒด๋ ์๋ด ์์ญ์ ์ ์ฅ๋จ
- ์๋ด ์์ญ์ด ๋ค ์ฐจ๋ฉด minor gc ๋ฐ์
- ์ฐธ์กฐ ์ค์ธ ๊ฐ์ฒด๋ S0๋ก ์ด๋, ์ฐธ์กฐ๊ฐ ์๋ ๊ฐ์ฒด๋ ์ญ์ ๋จ
- ๋ค์ minor gc์์๋ ์๋ด์์ ์ด์๋จ์ ๊ฐ์ฒด๋ค์ด S1๋ก ์ด๋. S0์ ์๋ ์ฐธ์กฐ ์ค์ธ ๊ฐ์ฒด๋ค์ ๋์ด๊ฐ ์ฆ๊ฐํ๊ณ S1๋ก ์ด๋. ์ด์๋จ์ ๋ชจ๋ ๊ฐ์ฒด๊ฐ S1๋ก ์ด๋ํ๋ฉด ์๋ด๊ณผ S0 ์ญ์
- 1~4๋ฅผ ๋ฐ๋ณตํ๋ค๊ฐ ๊ฐ์ฒด์ ๋์ด๊ฐ ํน์ threshold์ ๋๋ฌํ๋ฉด young generation์์ old generation์ผ๋ก ์ด๋
GC ์ข ๋ฅ
The Serial GC : CPU ์ฝ์ด๊ฐ ํ๋๋ง ์์ ๋ ์ฌ์ฉ
The Parallel GC : young generation gc๋ฅผ ์ํํ๊ธฐ ์ํด ๋ฉํฐํ ์ฐ๋ ๋ ์ฌ์ฉ
G1 GC : 2์ฐจ์ ํํ๋ก ์ผ์ ํฌ๊ธฐ์ region์ผ๋ก ๊ตฌ๋ถ
// TODO
Heapdump
Scouter (APM)
์ฐธ๊ณ ์๋ฃ
https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html
https://d2.naver.com/helloworld/1329
https://d2.naver.com/helloworld/329631
'์คํฐ๋ > ์๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ ๋ฌด ํจ์จ์ ์ฌ๋ ค์ฃผ๋ Intellij ๋จ์ถํค (์๋์ฐ ๊ธฐ์ค) (1) | 2024.02.25 |
---|---|
Spring Boot file upload download rest api ์์ - 1 (0) | 2024.02.19 |
์๋ฐ iterators๋? (0) | 2024.02.11 |
์๋ฐ์์ Map ์ํ ๋ฐฉ๋ฒ (0) | 2024.01.27 |
Lambdas and Stream (0) | 2023.01.19 |
๋๊ธ