์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- css
- ์ฑ
- ์ํ
- ์ํ์ฃผ
- ํ์ด์ฌ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์ ๋ฆฌํธ๋ฆฌํธ
- ๋ฐ์ํ
- ๊ฐ๋ฐ
- JavaScript
- Java
- Python
- ๋ฐฐ์์ ๋ฐฐ์
- ํ์ฒ์ ๋ฆฌํธ๋ฆฌํธ
- ๊ฐ์ดํ ์ข ๋ญ๊ฐ๋น
- ๋๊ฐ
- ์ฝ๋ฉ
- ํ๋ก๊ทธ๋๋ฐ
- database
- ์ค๋ธ์
- html
- ์ค๋ผํด
- ๊น๋ฏธ๊ฒฝ์๋งํ์์
- K๋ฐฐํฐ๋ฆฌ๋ ๋ณผ๋ฃจ์
- ์นดํ๋๊ฐ
- ์๋ฐ์คํฌ๋ฆฝํธ
- ์นํผ๋ธ๋ฆฌ์ฑ
- ์๋ฐ
- ๋ ์
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- Today
- Total
JiYoung Dev ๐ฅ
๊ธฐ์ ๋ฉด์ ์ค๋น 2. ๊ฐ๋น์ง ์ปฌ๋ ์ (Garbage Collection) ๋ณธ๋ฌธ
๊ธฐ์ ๋ฉด์ ์ค๋น 2. ๊ฐ๋น์ง ์ปฌ๋ ์ (Garbage Collection)
Shinjio 2023. 11. 1. 20:25์์ ์ง๋ฌธ. ๊ฐ๋น์ง ์ฝ๋ ํฐ๋? ํ์ํ ์ด์ ์ ๋์ ๋ฐฉ์
Garbage Collection(๊ฐ๋น์ง ์ปฌ๋ ์ , GC)์ด๋?
๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฒ ์ค์ ํ๋๋ก, ํ๋ก๊ทธ๋จ์ด ๋์ ์ผ๋ก ํ ๋นํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ ์ค์์ ํ์์๊ฒ ๋ ์์ญ์ ํด์ ํ๋ ๊ธฐ๋ฅ์ด๋ค.
C์ธ์ด๋ C++ ๊ฐ์ ์ธ์ด๋ ์๋์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋๋ก ์ค๊ณ๋ ๋ฐ๋ฉด, Java์ C#๊ณผ ๊ฐ์ ์ธ์ด์์๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ํตํด ์๋์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ ์ ์๋๋ก ํ๋ค. ์๋ฅผ ๋ค์ด, C์ธ์ด๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ํ์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ์ด์์ฒด์ ๋ก๋ถํฐ ํ ๋น๋ฐ์ ์ฌ์ฉํ๋ค๊ฐ ๋ค ์ฐ๋ฉด ๋ค์ ํด์ ํด์ ์ด์์ฒด์ ๋ก ๋ฐํํด์ผํ๋ค. ๋ง์ฝ ๊ฐ๋ฐ์๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํ์ง ์๋๋ค๋ฉด ํ๋ก์ธ์ค๊ฐ ์ ์ ์ปค์ง๋ค๊ฐ ์ด์์ฒด์ ์ ์ํด ์๊ทธ๋์ ๋ง๊ณ ์ฃฝ๊ฒ๋๋ค. ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ์ง ์์์ ์๊ธฐ๋ ๋ฒ๊ทธ '๋ฉ๋ชจ๋ฆฌ ๋ฆญ(Memory Leak)'์ด ๋ฐ์ํ๋ ๊ฒ์ด๋ค.
๋ฐ๋ฉด, ์๋ฐ๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ํตํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋์ผ๋ก ๊ด๋ฆฌํด์ค๋ค. ์๋ฐ ํ๋ก๊ทธ๋๋จธ๋ ์ง์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋น๊ณผ ๋ฐํ์ ์ํํ๋ ๋์ JVM์ ํตํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น ๋ฐ๋๋ค. ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ JVM์ด ์์์ ํ์ํ ๋ค์ ํด์ ํด์ค๋ค. JVM์ ์ด๋ฌํ ๋ฉ๋ชจ๋ฆฌ ํด์ ๋์์ '๊ฐ๋น์ง ์ปฌ๋ ์ (Garbage Collection)'์ด๋ผ๊ณ ํ๋ค. (JVM์ ์คํ ์์ง์ Garbage Collector๋ฅผ ํฌํจํ๊ณ ์๋ค)
๋ค์ ๋งํด ๊ฐ๋น์ง ์ปฌ๋ ์ (Garbage Collection, GC)๋ ์๋ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฐฉ๋ฒ ์ค์ ํ๋๋ก JVM์ Heap ์์ญ์์ ๋์ ์ผ๋ก ํ ๋นํ๋ ๋ฉ๋ชจ๋ฆฌ ์ค ํ์์๊ฒ ๋ ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ฒด(garbage)๋ฅผ ๋ชจ์ ์ฃผ๊ธฐ์ ์ผ๋ก ์ ๊ฑฐํ๋ ํ๋ก์ธ์ค๋ฅผ ๋งํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ํํ๋ ์ฃผ์ฒด๋ฅผ ๊ฐ๋น์ง ์ปฌ๋ ํฐ(Garbage Collector)๋ผ๊ณ ํ๋ค.
JVM ๊ด๋ จ ์๋ฃ :
๊ธฐ์ ๋ฉด์ ์ค๋น 1. Java ์ธ์ด์ ํน์ง (+JVM๊ณผ ์๋ฐ์ ์ปดํ์ผ ๋ฐฉ์, JRE vs JDK)
Java๋? ์ฌ ๋ง์ดํฌ๋ก์์คํ ์ฆ(Sun Microsystems, Inc.)์์ ๊ฐ๋ฐํ์ฌ 1996๋ 1์์ ๊ณต์์ ์ผ๋ก ๋ฐํํ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ธ์ด ์ด๊ธฐ์ ์ ์์ค ๊ณ ์ฌ๋ง(James Gosling)์ด๋ ์์ง๋์ด๋ฅผ ์ค์ฌ์ผ๋ก ๊ฐ์ ์ ํ์
danyoujeong.tistory.com
๊ฐ๋น์ง(Garbage)๋?
Heap ์์ญ์ ๊ฐ์ฒด ์ค Stack์์ ๋๋ฌ ๋ถ๊ฐ๋ฅํ(Unrecheable) ๊ฐ์ฒด๋ค์ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ๋์์ด ๋๋ค.
Product product = new Product("TV");
sellTo(product);
product = null;
Person person = new Person("Dave");
person.sayHello();
person = new Person("Eric");
person.sayHello();
์์ ๋ ๊ฐ์ ์ฝ๋์ ์ฒซ ์ค์์ new Product("TV")์ new Person("Dave")๋ ๋ฉ๋ชจ๋ฆฌ ์ด๋๊ฐ(Heap ์์ญ)์ ํ ๋น๋์์ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋น ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ฐ๋ฆฌํค๋ product๋ null์ด ๋๊ณ , person์ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ค. ์ด๋ด ๋ ์ด์ ์ ์ฐธ์กฐ๋์๋ new Product("TV")์ new Person("Dave") ๊ฐ์ฒด๋ ์ด๋ ํ ๊ฒฝ๋ก๋ก๋ ์ฐธ์กฐ๋์ง ์๋ "Unreachable ์ํ"๊ฐ ๋๋ค. ์ด๋ฌํ ์ํ๊ฐ ๋ ๊ฐ์ฒด๋ ๊ฐ๋น์ง๋ก ํ๋จ๋์ด ํ์๋นํ๊ฒ ๋๋ค.
Stop-the-world (STW)
๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ๊ฐ๋น์ง๋ค์ ํ์ํ๋ ๋์์ด ๋ณ๋์ ์ค๋ ๋์์ ์กฐ์ฉํ ์ํ๋๋ฉด ํฐ ๋ฌธ์ ๊ฐ ์๋ค. ๊ทธ๋ฌ๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ ์ข ์ข ๊ฐ๋น์ง๋ค์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ์ํ๊ธฐ ์ํด ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํ์ ๋ฉ์ถ๋ค. ์ด๋ฌํ ๋์์ 'Stop-the-world'๋ผ๊ณ ํ๋ค. ๋๋ถ๋ถ JVM์์ GC ํ๋์ด๋ผ๊ณ ํ๋ฉด ์ด Stop-the-world ์๊ฐ์ ์ค์ด๋ ๊ฒ์ ์๋ฏธํ๋ค.
๊ฐ๋น์ง ์ปฌ๋ ์ (Garbage Collection) ๋์ ๋ฐฉ์
Mark and Sweep
- Mark : ๋จผ์ Root Space๋ก๋ถํฐ ๊ทธ๋ํ ์ํ๋ฅผ ํตํด ์ฐ๊ฒฐ๋ ๊ฐ์ฒด๋ค์ ์ฐพ์๋ด์ด ๊ฐ๊ฐ ์ด๋ค ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ณ ์๋์ง ์ฐพ์์ ๋งํนํ๋ค.
- Sweep : ์ฐธ์กฐํ๊ณ ์์ง ์๋ ๊ฐ์ฒด ์ฆ Unreachable ๊ฐ์ฒด๋ค์ Heap์์ ์ ๊ฑฐํ๋ค.
- Compact : Sweep ํ ๋ถ์ฐ๋ ๊ฐ์ฒด๋ค์ Heap์ ์์ ์ฃผ์๋ก ๋ชจ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ ๋น๋ ๋ถ๋ถ๊ณผ ๊ทธ๋ ์ง ์์ ๋ถ๋ถ์ผ๋ก ์์ถํ๋ค. (๊ฐ๋น์ง ์ปฌ๋ ํฐ์ ์ข ๋ฅ์ ๋ฐ๋ผ ์งํํ์ง ์๋ ๊ฒฝ์ฐ๋ ์์)
๊ฐ๋น์ง ์ปฌ๋ ์ (Garbage Collection) ๋์ ๊ณผ์
JVM์ Heap ์์ญ์ ์ฒ์ ์ค๊ณ๋ ๋ 2๊ฐ์ง๋ฅผ ์ ์ (Weak Generational Hypothesis)๋ก ์ค๊ณ๋์๋ค.
- ๋๋ถ๋ถ์ ๊ฐ์ฒด๋ ๊ธ๋ฐฉ ์ ๊ทผ ๋ถ๊ฐ๋ฅํ ์ํ(Unreachable)๊ฐ ๋๋ค.
- ์ค๋๋ ๊ฐ์ฒด์์ ์๋ก์ด ๊ฐ์ฒด๋ก์ ์ฐธ์กฐ๋ ์์ฃผ ์ ๊ฒ ์กด์ฌํ๋ค.
์ด๋ ๋๋ถ๋ถ์ ๊ฐ์ฒด๋ ์ผํ์ฑ์ด๋ฉฐ, ๋ฉ๋ชจ๋ฆฌ์ ์ค๋ซ๋์ ๋จ์์๋ ๊ฒฝ์ฐ๋ ๋๋ฏ๋ค๋ ์๋ฏธ์ด๋ค. ๋ฐ๋ผ์ JVM ๋ฉ๋ชจ๋ฆฌ๋ ๊ฐ์ฒด์ ์์กด ๊ธฐ๊ฐ์ ๋ฐ๋ผ ๋ฌผ๋ฆฌ์ ์ธ Heap ์์ญ์ Young, Old 2๊ฐ์ง ์์ญ์ผ๋ก ๋๋๊ฒ ๋์๋ค. Young ์์ญ์ ๋ค์ 'Eden' ์์ญ๊ณผ ๋ ๊ตฐ๋ฐ์ Survivor ์์ญ(S0, S1)์ผ๋ก ๋๋์ด ๊ด๋ฆฌํ๋ค.
Young ์์ญ(Young Generation)
์๋กญ๊ฒ ์์ฑ๋ ๊ฐ์ฒด๊ฐ ํ ๋น(Allocation)๋๋ ์์ญ์ด๋ฉฐ Young Generation ์์ญ์์ ๋ฐ์ํ๋ GC๋ฅผ Minor GC๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๋๋ถ๋ถ์ ๊ฐ์ฒด๊ฐ ๊ธ๋ฐฉ Unreachacble ์ํ๊ฐ ๋๊ธฐ ๋๋ฌธ์, ๋ง์ ๊ฐ์ฒด๊ฐ Young ์์ญ์ ์์ฑ๋์๋ค๊ฐ ์ฌ๋ผ์ง๋ค.
Young ์์ญ์ ๋ค์ Eden ์์ญ๊ณผ ๋ ๊ตฐ๋ฐ์ Survivor ์์ญ(S0, S1)์ผ๋ก ๋๋์ด ๊ด๋ฆฌํ๋ค.
Minor GC๋ ์๋์ ์ผ๋ก ๋น๋ฒํ๊ฒ ๋ฐ์ํ์ง๋ง ์งง๊ฒ ๋๋๋ค. ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ๋์์ธ Old Generation๊น์ง ์ค์บํด์ ๊ฐ๋น์ง๋ฅผ ์ฐพ์ง ์๋๋กํด์ ๋์ฑ ์งง์ Stop-the-world ์๊ฐ ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ํ ์ ์๋๋ก ํ๋ค.
Old ์์ญ(Old Generation)
Young ์์ญ์์ Reachable ์ํ๋ฅผ ์ ์งํ์ฌ ์ด์๋จ์ ๊ฐ์ฒด๊ฐ ๋ณต์ฌ๋๋ ์์ญ์ผ๋ก Young Generation ์์ญ์์ Old Generation ์์ญ์ผ๋ก ๊ฐ์ฒด๊ฐ ์ด๋ํ๋ ๊ฒ์ 'Promotion'์ด๋ผ๊ณ ํ๋ค.
Young ๋ณด๋ค ํฌ๊ฒ ํ ๋น๋๋ฉฐ, ์์ญ์ ํฌ๊ธฐ๊ฐ ํฐ ๋งํผ ๊ฐ๋น์ง๋ ์ ๊ฒ ๋ฐ์ํ๋ค.
Old ์์ญ์ ๋ํ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ Major GC๋ผ๊ณ ๋ถ๋ฅธ๋ค.
Garbage Collection ๋์ ๊ณผ์
์์์ Young Generation ์์ญ์์ Old Generation ์์ญ์ผ๋ก ๊ฐ์ฒด๊ฐ ์ด๋ํ๋ ํ์๋ฅผ 'Promotion'์ด๋ผ๊ณ ํ๋ค. Promotion์ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ฐ์ ์๋ก ์์ฑ๋ ๊ฐ์ฒด๋ค์ Eden ์์ญ์ ์์ฑ๋๋ค.
- ๊ฐ์ฒด์ ์์ฑ์ด ๊ณ์๋๋ฉด Eden ์์ญ์ด ๊ฐ๋์ฐฌ๋ค.
- ๊ทธ๋ฌ๋ฉด Minor GC๊ฐ ๋ฐ์ํด์ Eden ์์ญ์ ์๋ ๊ฐ๋น์ง๋ค์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ์ํ๋ค.
- Mark ๋์์ ํตํด Eden ์์ญ์ reachable ๊ฐ์ฒด๋ฅผ ํ์ํ๋ค.
- Eden ์์ญ์์ ์ฌ์ฉ๋์ง ์๋ ๊ฐ์ฒด(unreachable)์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๋ค. (Sweep)
- Eden์์ ์ด์๋จ์ ๊ฐ์ฒด๋ค์ ๋ ๊ฐ์ survivor ์์ญ(S0, S1) ์ค ํ๋๋ก ์ฎ๊ฒจ์ง๋ค. S0๋ฅผ ์ฌ์ฉํ๊ฒ ๋ค๊ณ ํ๋ค. ์ฎ๊ฒจ์ง ๊ฐ์ฒด์๋ age ๊ฐ์ด ๋งค๊ฒจ์ง๋ค.
- ๋ช ๋ฒ์ Minor GC๊ฐ ๋ฐ์ํ๋ฉด์ ์ด์๋จ์ Eden ๊ฐ์ฒด๋ค์ด S0 ์์ญ์ผ๋ก ์ฑ์์ง๋ค ๋ณด๋ฉด, ๊ฒฐ๊ตญ S0 ์์ญ๋ ๊ฐ๋์ฐฌ๋ค. ์ด ๋, S0 ์์ญ์ ์๋ ๊ฐ์ฒด์ ๋ํด์๋ ๊ฐ๋น์ง ์ฌ๋ถ๋ฅผ ํ๋จํด ํ์ํ ์ ์์ผ๋ฉด ํ์ํ๋ค. (Minor GC)
- S0 ์์ญ์ ์๋ ๊ฐ์ฒด๋ค ์ค ์ด์๋จ์ ๊ฐ์ฒด๋ ๋ ๋ค๋ฅธ survivor ์์ญ์ธ S1์ผ๋ก ์ฎ๊ฒจ์ง๋ค. ๊ทธ๋ฌ๋ฉด์ Age ๊ฐ์ด 1 ์ฆ๊ฐํ๋ค. S0 ์์ญ์ ๋น์์ ธ์๋ ์ฑ๋ก ๋๋๋ค.
- ๊ณ์ ์ด์๋จ์ ๊ฐ์ฒด๋ค์ S0์ S1์ ์ค๊ฐ๋ฉด์ age๊ฐ์ด ์ฌ๋ผ๊ฐ๋ค. ๊ทธ๋ฌ๋ค ์ผ์ ์์ค ์ด์์ผ๋ก age๊ฐ ์ฌ๋ผ๊ฐ๋ฉด ๊ฐ์ฒด๋ Old Generation ์์ญ์ผ๋ก ์ฎ๊ธด๋ค. (promotion)
- Old Generation ์์ญ์ ๋ฏธ์ฌ์ฉ ๊ฐ์ฒด๋ Full GC(Major GC)๋ฅผ ํตํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๋ค.
- Major GC๋ Old ์์ญ์ ๋ฐ์ดํฐ๊ฐ ๊ฐ๋์ฐจ๋ฉด GC๋ฅผ ์คํํ๋ ๋จ์ํ ๋ฐฉ์์ด๋ค.
- Old ์์ญ์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ฉ์น๋ฅผ ๋๊ฒ ๋๋ฉด, Old ์์ญ์ ์๋ ๋ชจ๋ ๊ฐ์ฒด๋ค์ ๊ฒ์ฌํ์ฌ ์ฐธ์กฐ๋์ง ์๋ ๊ฐ์ฒด๋ค์ ํ๊บผ๋ฒ์ ์ญ์ ํ๋ ๋ฐฉ์
- ํ์ง๋ง Old Generation์ Young Generation์ ๋นํด ์๋์ ์ผ๋ก ํฐ ๊ณต๊ฐ์ ๊ฐ์ง๊ณ ์์ด, ์ด ๊ณต๊ฐ์์ ๋ฉ๋ชจ๋ฆฌ ์์ ๊ฐ์ฒด ์ ๊ฑฐ์ ๋ง์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ฒ ๋๋ค.
์์ ์ง๋ฌธ ๋ตํ๊ธฐ
Q. ๊ฐ๋น์ง ์ฝ๋ ํฐ๋? ํ์ํ ์ด์ ์ ๋์ ๋ฐฉ์
๊ฐ๋น์ง ์ฝ๋ ํฐ๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ํํ๋ ์ฃผ์ฒด์ ๋๋ค. ์ฌ๊ธฐ์ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ด๋ ์๋ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฐฉ๋ฒ ์ค ํ๋๋ก JVM์ Heap ์์ญ์ ๋์ ์ผ๋ก ํ ๋นํ๋ ๋ฉ๋ชจ๋ฆฌ ์ค ๋์ด์ ํ์๋ก ํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ฒด๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ชจ์ ์ ๊ฑฐํ๋ ํ๋ก์ธ์ค์ ๋๋ค. ๊ฐ๋น์ง ์ฝ๋ ํฐ๊ฐ ์๋ ์ธ์ด๋ก C์ธ์ด๊ฐ ์๋๋ฐ, C์ธ์ด์ ๊ฒฝ์ฐ, ํ๋ก๊ทธ๋๋จธ๊ฐ ์ง์ ์ด์์ฒด์ ๋ก๋ถํฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น ๋ฐ๊ณ ๋์ด์ ์ฌ์ฉํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฐํํจ์ผ๋ก์จ ๋ฉ๋ก๋ฆฌ๋ฅผ ๊ด๋ฆฌํด์ฃผ์ด์ผ ํฉ๋๋ค. ๋ง์ฝ ๊ด๋ฆฌ๋ฅผ ํ์ง ์์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ณ์ ์์ด๊ฒ ๋๋ฉด ํ๋ก์ธ์ค๊ฐ ๊ณ์ ์ปค์ ธ ์ด์์ฒด์ ๋ก๋ถํฐ ์๊ทธ๋์ ๋ฐ์ ์ฃฝ๊ฒ ๋๋ ํ์์ด ๋ฐ์ํฉ๋๋ค.
๋์ ๋ฐฉ์์ Heap ์์ญ์ Young Generation ์์ญ๊ณผ Old Generation ์์ญ์ ๋ฐ๋ผ ์ฝ๊ฐ ๋ค๋ฆ ๋๋ค. ๋จผ์ ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ฉด Young Generation์ Eden ์์ญ์ ํ ๋น๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ Eden ์์ญ์ด ๊ฐ๋ ์ฐจ๋ฉด Minor GC๊ฐ ๋ฐ์ํฉ๋๋ค. Minor GC๋ Mark and Sweep ๋ฐฉ์์ผ๋ก ์ฌ์ฉ๋์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ณํด ํด์ ํ๋ ์์ ์ ์งํํฉ๋๋ค. Minor GC์์ ์ด์๋จ์ ๊ฐ์ฒด๋ค์ age๋ฅผ ๋ถ์ฌํฉ๋๋ค. Minor GC์์ ์ด์๋จ์ ๊ฐ์ฒด๋ S0 ํน์ S1 ์์ญ์ ํ ๋น๋๊ณ S0, S1์ ์ค๊ฐ๋ฉด์ age๊ฐ ์ฌ๋ผ๊ฐ๋๋ค. ์ผ์ age ์ด์์ด ๋๋ฉด OId Generation ์์ญ์ผ๋ก ์ด๋ํ ์ง ๊ฒฐ์ ํฉ๋๋ค. Old Generation ์์ญ์ด ๊ฐ๋์ฐจ๋ฉด Major GC๊ฐ ์ผ์ด๋ ๊ฐ๋น์ง๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
์ฐธ๊ณ ์๋ฃ
[Java] ์๋ฐ ๊ฐ๋น์ง ์ปฌ๋ ์ ๊ธฐ์ด(Garbage Collection Basic)
์๋ฐ ๊ฐ๋ฐ์๋ผ๋ฉด '๊ฐ๋น์ง ์ปฌ๋ ์ (Garbage Collection)'์ ๋ํด์ ๊ณ ๋ฏผํ๊ฒ ๋๋ ์๊ฐ์ด ์จ๋ค. ํ ์ด ํ๋ก์ ํธ๋ ์์ ํ๋ก์ ํธ์์๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ๋ํ ๊ด์ฌ์ด ์ ๋ค. ๊ฐ๋น์ง ์ปฌ๋ ํฐ์ ์ ํ์ด ์ฑ๋ฅ
hbase.tistory.com
[Java] ๊ฐ๋น์ง ์ปฌ๋ ํฐ ์ด๋ฒ์ ๋๋ด์!!!!!!!!!!!!
๊ฐ๋น์ง ์ปฌ๋ ํฐ ๋ถ์ด๋ฒ๋ฆฌ์!
velog.io
[Java] Garbage Collection(๊ฐ๋น์ง ์ปฌ๋ ์ )์ ๊ฐ๋ ๋ฐ ๋์ ์๋ฆฌ (1/2)
1. Garbage Collection(๊ฐ๋น์ง ์ปฌ๋ ์ )์ด๋? [ Garbage Collection(๊ฐ๋น์ง ์ปฌ๋ ์ )์ด๋? ] ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐ ํ๋ค ๋ณด๋ฉด ์ ํจํ์ง ์์ ๋ฉ๋ชจ๋ฆฌ์ธ ๊ฐ๋ฐ์ง(Garbage)๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค. C์ธ์ด๋ฅผ ์ด์ฉํ๋ฉด free()๋ผ๋ ํจ
mangkyu.tistory.com
โ ๊ฐ๋น์ง ์ปฌ๋ ์ ๋์ ์๋ฆฌ & GC ์ข ๋ฅ ๐ฏ ์ด์ ๋ฆฌ
Garbage Collection(GC) ์ด๋? ๊ฐ๋น์ง ์ปฌ๋ ์ (Garbage Collection, ์ดํ GC)์ ์๋ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฐฉ๋ฒ ์ค์ ํ๋๋ก JVM(์๋ฐ ๊ฐ์ ๋จธ์ )์ Heap ์์ญ์์ ๋์ ์ผ๋ก ํ ๋นํ๋ ๋ฉ๋ชจ๋ฆฌ ์ค ํ์ ์๊ฒ ๋ ๋ฉ๋ชจ๋ฆฌ ๊ฐ
inpa.tistory.com
[Java] GC(Garbage Collection) ์ดํดํ๊ธฐ
๋ค์ด๊ฐ๋ฉฐ Java์ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ ๋ค์ํ ์ข ๋ฅ๊ฐ ์์ง๋ง ๊ณตํต์ ์ผ๋ก ๋ค์์ 2๊ฐ์ง ์์ ์ ์ํํ๋ค. ํ(Heap) ๋ด์ ๊ฐ์ฒด ์ค Garbage๋ฅผ ์ฐพ์๋ธ๋ค. ์ฐพ์๋ธ Garbage ๊ฐ์ฒด๋ฅผ ๋ฐํํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ํ๋ค. ์ต
jangjjolkit.tistory.com