๐ซGarbage Collection
Brought from this site.
Heap ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
Unity์์์ Heap ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ 2๊ฐ์ง๋ก ๋๋์ด์ง
โถ Native Heap : C++๋ก ์์ฑ๋ ์ ๋ํฐ ์์ง์์ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ๋ก, Texture, Asset, Mesh ์ ๊ฐ์ ๊ฒ์ ๋ด๊ณ ์์
+ Unity Engine์์ Scene ์ ํ์ด ๋ฐ์ํ ๋์ ์์ ์์๋ค์ด ์ฌ์ฉ๋์ง ์์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๋ ๋์์ ํจ
+ DontDestroyOnLoad ๋ฅผ ํตํด Scene์ ํ ์์๋ ๋จ์ ์๋ GameObject๋ ํด์ ๋์ง ์์
( ๋จ์ ์๋ GameObject์ Script๊ฐ ์ฌ๋ผ์ง Scene์ ์๋ ์ด์ ( Audio, Texture ๋ฑ )์ ์ฐธ์กฐ ํ๊ณ ์์ ๋์๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํด์ ๋์ง ์์ )
โถ Managed Heap : Mono์์ ๊ด๋ฆฌํ๋ ๋ฉ๋ชจ๋ฆฌ๋ก Script์์ ํ ๋นํ class, string ๊ณผ ๊ฐ์ ์์ ๋ค์ ๋ด๊ณ ์์
+ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ Managed Heap์์ ์ํ
โฃ GC ( ๊ฐ๋น์ง ์ปฌ๋ ์ )์ ๋์ ์๋ฆฌ
1. C# ๋ฉ๋ชจ๋ฆฌ ํ ๋น
- C#์ ์ ํ์ ์ธ Heap ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์ํ ํฌ์ธํฐ ๋ง์ ๊ฐ์ง๊ณ ์์
- ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด ํ์ํ ๊ฒฝ์ฐ ํ์ฌ ํ์ํ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๋งํผ ์ฆ๊ฐ์ํค๊ณ 0์ธ๋๊ฐ์ผ๋ก ์ค์ . ํฌ์ธํฐ๋ ์ฆ๊ฐ๋ ํฌ๊ธฐ๋งํผ ์ด๋ ์ํด
- ํ ๋น์ ์ํ ์ถฉ๋ถํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ ๊ฒฝ์ฐ, GC๊ฐ ํธ์ถ๋๊ณ GC๊ฐ ํธ์ถ๋จ์๋ ์ถฉ๋ถํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ ๊ฒฝ์ฐ์๋ Heap๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ฅ ๋จ. ๋๋ถ๋ถ์ Unity ํ๋จํผ์ ๊ฒฝ์ฐ ํ์ ํฌ๊ธฐ๋ฅผ 2๋ฐฐ๋ก ๋๋ฆผ
- ๋ง์ผ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋ถ์กฑํด์ง๋ ๊ฒฝ์ฐ ์ฑ์ด ๊ฐ์ ์ข ๋ฃ ๋จ
2. C# ๋ฉ๋ชจ๋ฆฌ ํด์
- GC ๋ ์์คํ ์ ์ค์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑ ํ๊ฑฐ๋, Managed Heap์ ํ ๋น๋ ๊ฐ์ฒด์ ์ฌ์ฉ๋๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ฉ๋๋ ์๊ณ ๊ฐ์ ๋์์ ๋, GC.Collect ๋ฉ์๋๊ฐ ํธ์ถ ๋ ๋ ๋ฐ์
- GC๋ ํ ๋ฉ๋ชจ๋ฆฌ ์์์ ์ฌ์ฉ ์ค์ธ ๊ฐ์ฒด๋ค์ ์ฐธ์กฐ ๊ทธ๋ํ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ํ์ฌ ์ฌ์ฉ ์ค์ด์ง ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๊ณ ์ฌ์ฉ ์ค์ธ ๋ฉ๋ชจ๋ฆฌ๋ ์ฌ๋ฐฐ์น๋ฅผ ํ๊ฒ ๋จ
- ์ฐธ์กฐ ๊ทธ๋ํ์ Root๋ Stack์ ์๋ ๋ก๋ฒ ์ผ ์, ์ ์ ๋น๋, ์ ์ญ ๋ณ์ ๋ฑ์ด ๋๊ณ , ํ์๋ ๊ฐ์ฒด ๊ฐ์ ์ฐธ์กฐ๊ฐ ๋ ์ ์์
Root๊ฐ ์ฐธ์กฐํ๋ A,C ๊ทธ๋ฆฌ๊ณ A๊ฐ ์ฐธ์กฐํ๋ D๊ฐ GC ์ดํ์๋ ๋จ์ ์์์ ํ์ธํ ์ ์์
- ์ธ๋๋ณ ๊ฐ๋น์ง ์ปฌ๋ ์
: ์ต๊ทผ์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ๋ถํฐ GC๊ฐ ํ๋ฒ ๋ถ๋ฆด ๋๋ง๋ค ์ด์ ๋จ์ ๋ฉ๋ชจ๋ฆฌ๊น์ง 0 ~ 2 ์ธ๋๊น์ง ๋ถ๋ฆฌ
: ์ต๊ทผ์ ์์ฑ๋ ๊ฐ์ฒด์ผ ์๋ก ๋ฉ๋ชจ๋ฆฌ ํด์ ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋๊ธฐ ๋๋ฌธ์ 0 ์ธ๋์ ๋ฉ๋ชจ๋ฆฌ ๋ถํฐ ๊ด๋ฆฌ
: 0์ธ๋์ GC์์ ๋จ์ ์๋ ๋ฉ๋ชจ๋ฆฌ๋ 1์ธ๋๋ก ๋ณ๊ฒฝ ๋จ, 1์ธ๋์ GC๊ฐ ๋ฐ์ํ๊ณ ๋จ์ด ์๋ 1์ธ๋๋ 2์ธ๋๋ก ๋ณ๊ฒฝ ๋จ
: 0 ์ธ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ํ์๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํด์ง๋ฉด 1์ธ๋ -> 2์ธ๋ ์์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌ
3. SOH, LOH
- C# ์์๋ 85KB ๋ฅผ ๊ธฐ์ค์ผ๋ก SOH( Small Object Heap ), LOH( Large Object Heap )์ผ๋ก ๋๋
- LOH ๋ SOH์ ๋ฌ๋ฆฌ ํ ๋น๊ณผ ๋์์ 2์ธ๋๋ก ์์, LOH๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ๋ฐฐ์น ์ ์ค๋ฒํค๋๊ฐ ํฌ๊ธฐ ๋๋ฌธ์ ์ฌ๋ฐฐ์น๋ฅผ ํ์ง ์์
# ์ฐธ๊ณ ์๋ฃ
Last updated