[Memo-Unity] 36. GC(Garbage Collection)
์นดํ ๊ณ ๋ฆฌ: MeMo Unity
ํ๊ทธ: C#, MeMo Unity
Garbage Collection
Garbage Collection
Garbage Collection
๊ฐ๋น์ง ์ปฌ๋ ํฐ(Garbage Collection)
๋ฏธ์ฌ์ฉ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์
ํ๊ณ ํด์ ํ๋ ํ๋ก์ธ์ค
์ฒ๋ฆฌํ ์ ๋ณด์ ๊ณต๊ฐ์ด ํ์ํ๋ค (๋ฉ๋ชจ๋ฆฌ)
๋ณ์๋ค ํจ์๋ค, ๊ฐ์ฒด๋ค์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์งํ๋ ์์
๋ฉ๋ชจ๋ฆฌ๋ฅผ ์น์์ฃผ์ง์์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋์(memory leak)๊ฐ ์๊ธด๋ค
์๋ก์ด ์ธ์ด๋ค์์๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ฅผ ๋์
C# ๊ฐ๋น์ง ์ปฌ๋ ํฐ
c# ํ์ ํ ๋นํ ๊ฐ์ฒด๋ CLR์ด ์๋์ผ๋ก ์๊ฑฐ
CLR์ ๋ ์ด์ ์ฌ์ฉํ์ง ์๋ ๊ฐ์ฒด๋ ์ฐ๋ ๊ธฐ(Garbage)๋ก ํ๋จ
์ด ๋ฉ๋ชจ๋ฆฌ Garbage๋ฅผ ์๊ฑฐ(Collection)ํ๋ ๊ฒ์ด ๊ฐ๋น์ง ์ปฌ๋ ์
EX) ์คํ์์ญ์a๊ฐ ์ฐธ์กฐํ๋ ํ์ A๊ฐ ์๋ค, ์คํ์์ญ์ a๊ฐ ์ฌ๋ผ์ง๋ฉด ํ์ A๋ ์์ฐ๋ ๋ฉ๋ชจ๋ฆฌ(Garbage)๊ฐ ๋๋ค.
GC ๋ฃจํธ
๋ฃจํธ : ํ์ ์๋ ๊ฐ์ฒด๋ฅผ ๋ถ๋๋ ์ฐธ์กฐ EX)a ์คํ๋๋ ํ์ ์์ฑ
์ปดํ์ผ๋ฌ๋ ๋ฃจํธ ๋ชฉ๋ก์ ์์ฑ
CLR์ ์ด ๋ฃจํธ ๋ชฉ๋ก์ ๊ด๋ฆฌํ๋ฉฐ ์ํ ๊ฐฑ์
๋ฃจํธ๋ชฉ๋ก์ ๊ฐ๋น์ง์ปฌ๋ ํฐ๊ฐ ์ฐธ์กฐํ๋ ์ค์ ์๋ฃ
๊ณผ์ 1
์ด๊ธฐ์ ๋ชจ๋ ๊ฐ์ฒด๊ฐ ์ฐ๋ ๊ธฐ๋ผ๊ณ ๊ฐ์
๋ฃจํธ ๋ชฉ๋ก์ ์ํํ๋ฉฐ ๊ฐ ๋ฃจํธ๊ฐ ์ฐธ์กฐํ๋ ํ ๊ฐ์ฒด์์ ๊ด๊ณ ์กฐ์ฌ
๊ด๊ณ์๋ ๋ฃจํธ๋ ์ฐ๋ ๊ธฐ, ์ฐธ์กฐํ๋ ํ ๊ฐ์ฒด๋ ์ ์ง
๊ณผ์ 1
์๊ฑฐ ํ ๋น์ด์๋ ๊ณต๊ฐ ์ผ๋ก ์ธ์ ๊ฐ์ฒด๋ค์ ์ด๋ํด์ ์ ๋ฆฌ
๊ฐ๋น์ง์ปฌ๋ ์
์ธ๋ : ๊ฐ๋น์ง ์ปฌ๋ ์
์ ๊ฒช์ ํ์
X์ธ๋๊ฐ ๊ฐ๋น์ง ์ปฌ๋ ์
์ด ์ผ์ด๋๋ฉด X์ดํ ์ธ๋๊ฐ ๋ชจ๋ ๊ฐ๋น์ง ์ปฌ๋ ์
์ด ์ผ์ด๋๋ค.
์ ๋ํฐ ๊ฐ๋น์ง ์ปฌ๋ ์
์ ๋ํฐ์์๋ Unity Mono ์์ง๊ณผ ๊ฐ์ ๋ฐํ์ ์์คํ
์ด ์๋์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํํ๋ค.
์ ๋ํฐ๋ Boehm-Demers-Weiser ๊ฐ๋น์ง ์ปฌ๋ ์
์ ์ฌ์ฉํ๋ค. ์๊ณ ๋ฆฌ์ฆ Mark-Sweep ์ ์ฌ์ฉ
๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ๋์ ๋ณด์ด์ง๋ ์์ง๋ง, ํ์ ์ด์์ผ๋ก ์คํ๋๋๋ก ๋ง๋ ๊ฒ์ด ํ๋ก๊ทธ๋๋จธ์ ์ค์ํ ์ญํ ์ค ํ๋
Unity์์๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ Unity์์ ๋ ์ด์ ์ฌ์ฉํ์ง ์๋ ์ค๋ธ์ ํธ๋ก๋ถํฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ํฉ๋๋ค. ์คํฌ๋ฆฝํธ๊ฐ ๊ด๋ฆฌ๋๋ ํ์ ํ ๋นํ๋ ค๊ณ ํ์ง๋ง ํ ๋น์ ์์ฉํ ์ ์๋ ์ฌ์ฉ ๊ฐ๋ฅํ ํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ถฉ๋ถํ์ง ์์ผ๋ฉด Unity๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ฅผ ์คํํฉ๋๋ค. ๊ฐ๋น์ง ์ฝ๋ ํฐ๊ฐ ์คํ๋๋ฉด ํ์ ๋ชจ๋ ์ค๋ธ์ ํธ๋ฅผ ๊ฒ์ฌํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ ์ด์ ๋ ํผ๋ฐ์ค๊ฐ ์๋ ์ค๋ธ์ ํธ๋ฅผ ์ญ์ ํ๋๋ก ํ์ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ Unity๋ ๋ ํผ๋ฐ์ค๊ฐ ์๋ ์ค๋ธ์ ํธ๋ฅผ ์ญ์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ๋ณดํฉ๋๋ค.
์์ ํ๊ณผ ๋น ๋ฅด๊ณ ๋น๋ฒํ ๊ฐ๋น์ง ์ปฌ๋ ์ .(์ฃผ๊ธฐ์ ์ผ๋ก GC๋ฅผ ํํ๋ผ.)
if (Time.frameCount % 30 == 0)
{
System.GC.Collect();
}
ํฐ ํ๊ณผ ๋๋ฆฌ์ง๋ง ๋ ๋น๋ฒํ ๊ฐ๋น์ง ์ปฌ๋ ์
์ถฉ๋ถํ ํฐ ํ์ ํ๋ณดํ๋ฉด ๊ฒ์ํ๋ ์ด ์ค ์ผ์์ ์ง๊ฐ ๋ฐ์ํ ๋๊น์ง ์์ ํ ํ์ด ์ฐจ๋ฒ๋ ค์ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ด ์ผ์ด๋๋ ์ผ์ ๋ฐ์ํ์ง ์์ต๋๋ค. ์ผ์์ ์ง๊ฐ ๋ฐ์ํ๋ฉด ๋ช ์์ ์ผ๋ก ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์์ฒญํ ์ ์์ต๋๋ค.
์ค๋ธ์ ํธ ํ
์ค๋ธ์ ํธ ํ์ ์ฌ์ฉ์ ์๋ก ์์ฑ๋๊ณ ์ ๊ฑฐ๋๋ ์ค๋ธ์ ํธ์ ์๋ฅผ ์ค์ด๋ ๊ฒ์ผ๋ก ๊ฐ๋จํ๊ฒ ๊ฐ๋น์ง ์์ฑ์ ์ค์ผ ์ ์์ต๋๋ค.
์ ๋ํฐ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
์ ๋ํฐ ๊ฐ๋น์ง ์ปฌ๋ ํฐ ๊ฐ์
์ก๋ด
์ ๋ํฐ ๊ณต์ ๋ฌธ์ ์ ์ฌ์ฉํ๊ธฐ.
[Unity] UnityDocs
TOP
๋๊ธ๋จ๊ธฐ๊ธฐ