๐ฐ ์ฐ๋ฆฌ FIS ์์นด๋ฐ๋ฏธ 3๊ธฐ์ ๋ค๋๋ฉฐ ๋ฐฑ์๋ ๊ธฐ์ ์ธ๋ฏธ๋๋ฅผ ํ๊ฒ ๋์์ต๋๋ค.
์ ๋ Garbage Collector๋ฅผ ์ฃผ์ ๋ก ์ ํํ๊ณ , ์ด์ฌํ ์ค๋นํ ๋งํผ ๋ธ๋ก๊ทธ ํฌ์คํ ์ผ๋ก ๋จ๊ฒจ๋๋ ค๊ณ ํฉ๋๋ค~
๐ Garbage Collector(GC)๋?
ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๋ค ๋ณด๋ฉด,
์ ํจํ์ง ์์ ๋ฉ๋ชจ๋ฆฌ. ์ฆ, ๋ ์ด์ ์ฌ์ฉํ์ง ์๋ ๊ฐ์ฒด์ ๋ฉ๋ชจ๋ฆฌ์ธ Garbage(์ฐ๋ ๊ธฐ)๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
์ฉ์ด ๊ทธ๋๋ก ์ฌ์ฉํ์ง ์์ผ๋, ์ฐ๋ ๊ธฐ ๊ฐ์ด๋ผ๋ ๋ป์ ๋๋ค.
์ด ๊ฐ๋น์ง๋ฅผ ์๋ฐ๋ JVM์ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ์ฃผ๊ธฐ์ ์ผ๋ก ๊ฒ์ฌํด์ ์ฒญ์ํด ์ฃผ๋ฉฐ,
์ด ๊ฐ๋น์ง ์ปฌ๋ ํฐ์ ์ํด ์ํ๋๋ ํ๋ก์ธ์ค๋ฅผ Garbage Collection์ด๋ผ๊ณ ํฉ๋๋ค.
๊ทธ๋ผ ๋ชจ๋ ์ธ์ด๊ฐ ์ด ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ฅผ ํตํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ ๊น์?
๊ทธ๊ฒ์ ์๋๋๋ค.
์ฐ์ , ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฐฉ์์ ์ฐจ์ด์ ๋ฐ๋ผ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋
Unmanaged Language์ Managed Language๋ก ๊ตฌ๋ถํ ์ ์์ต๋๋ค.
Unmanaged Language์ธ C์ C++์์๋
malloc
๊ณผ free
์ ๊ฐ์ ํจ์๋ฅผ ์ฌ์ฉํด์ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๊ณ ํด์ ํด์ผ ํฉ๋๋ค.
์ด๋ฐ ๋ฒ๊ฑฐ๋ก์ด ์ผ์ Managed Language์ธ Java์์๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ง์ ๋ฉ๋ชจ๋ฆฌ ํด์ ๋ฅผ ํ์ง ์๊ณ ,
๊ฐ๋น์ง ์ปฌ๋ ํฐ์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฉ์ปค๋์ฆ์ด ์๋์ผ๋ก ๊ด๋ฆฌํด ์ค๋๋ค.
์๋ฐ ๊ฐ๋ฐ์๋ JVM์ ๊ฐ๋น์ง ์ปฌ๋ ํฐ ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น๊ณผ ํด์ ๋ฅผ ์ง์ ์ฝ๋ฉํ์ง ์์๋,
๋ฉ๋ชจ๋ฆฌ ๋์๋ ์ค๋ฒํ๋ก์ฐ ๋ฌธ์ ๋ฅผ ๊ฑฐ์ ๊ฒช์ง ์์ต๋๋ค.
๐ ์ ์ฐ๋ฆฌ๊ฐ Garbage Collector์ ๋ํด ์์์ผ ํ ๊น?
์ด์ฒ๋ผ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ์๋์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํด์ฃผ๋๋ฐ,
๊ทธ๋ผ์๋ ์ฐ๋ฆฌ๊ฐ ์ด ๋ด๋ถ๋ฅผ ์ดํดํด์ผ ํ๋ ์ด์ ๋ ๋ฌด์์ผ๊น์?
๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ๋ํ ํต์ ๊ถ์ ์์ํ๊ธฐ ๋๋ฌธ์
๋ฉ๋ชจ๋ฆฌ ์ค๋ฒํ๋ก์ฐ์ ๋์๋ฌธ์ ๊ฐ ํ ๋ฒ ํฐ์ง๋ฉด
๊ฐ์ ๋จธ์ ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฐฉ์์ ์ดํดํ์ง ๋ชปํ๋ ํ ํด๊ฒฐํ๊ธฐ๊ฐ ์๋นํ ์ด๋ ต์ต๋๋ค.
๋ํ ๋ ๋์ ๋์์ฑ์ ๋ฌ์ฑํ๋ ๋ฐ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ๋ฐฉํด๊ฐ ๋๋ ์ํฉ์ด ์ค๋ฉด,
์ด๋ฅผ ์ ์ ํ ๋ชจ๋ํฐ๋งํ๊ณ ์กฐ์จํ ์ ์์ด์ผ ํฉ๋๋ค.
๋๋ฌธ์ ์ ๋ ์ฌ๋ฌ๋ถ๋ค๊ป ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ์ด๋ป๊ฒ ๋์ํ๋์ง์ ๋ํด ์ค๋ช ๋๋ฆฌ๊ณ ์ ํฉ๋๋ค.
๐ ๊ฐ์ฒด ์์ฌ ํ๋จ - ๋์์ด ์ฃฝ์๋๊ฐ?
์๋ฐ์์๋ ๊ฑฐ์ ๋ชจ๋ ์ธ์คํด์ค๊ฐ Heap์ด๋ผ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ ์ฅ๋ฉ๋๋ค.
๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ Heap์ ์ฒญ์ํ๋ ค๋ฉด
๊ฐ์ฅ ๋จผ์ ์ด๋ค ๊ฐ์ฒด๊ฐ ์ด์์๊ณ , ๋ ์ด๋ค ๊ฐ์ฒด๊ฐ ์ฃฝ์๋์ง ํ๋จํด์ผ ํฉ๋๋ค.
(๊ฐ์ฒด๊ฐ ์ด์์๋ค๋ ๊ฒ์, ํด๋น ๊ฐ์ฒด๋ฅผ ์ด๋๊ฐ์์ ์ฐธ์กฐํ๊ณ ์๋ค๋ ๊ฒ. ์ฆ, ์์ง ํ์ํ ๊ฐ์ฒด๋ผ๋ ๋ป์ ๋๋ค.)
์ด๋ฅผ ํ๋จํ๊ธฐ ์ํ ์๊ณ ๋ฆฌ์ฆ ๋ ๊ฐ์ง๋ฅผ ์ค๋ช ๋๋ฆฌ๊ฒ ์ต๋๋ค.
๐ ์ฐธ์กฐ ์นด์ดํ ์๊ณ ๋ฆฌ์ฆ
๋จผ์ ์ฐธ์กฐ ์นด์ดํ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
์ด ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋จํ ์ค๋ช ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฐธ์กฐ ์นด์ดํฐ๋ฅผ ์ถ๊ฐํ๊ณ
์ฐธ์กฐํ๋ ๊ณณ์ด ํ๋ ๋์ด๋ ๋๋ง๋ค ์นด์ดํฐ ๊ฐ์ 1 ์ฉ ์ฆ๊ฐ์ํต๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ์ฐธ์กฐํ๋ ๊ณณ์ด ํ๋ ์ฌ๋ผ์ง ๋๋ง๋ค ์นด์ดํฐ ๊ฐ์ 1 ์ฉ ๊ฐ์์ํต๋๋ค.
์นด์ดํฐ ๊ฐ์ด 0์ด ๋ ๊ฐ์ฒด๋ ๋ ์ด์ ์ ๊ทผํ ์ ์๋ค๋ ๊ฒ์ด๋ฏ๋ก
๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๋ ๋ฐฉ์์ผ๋ก ๋์ํฉ๋๋ค.
์ฐธ์กฐ ์นด์ดํ ์๊ณ ๋ฆฌ์ฆ์
ํ์๋ฅผ ์ธ๊ธฐ ์ํด ์ฝ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ถ๊ฐ๋ก ์ฌ์ฉํ์ง๋ง
์๋ฆฌ๊ฐ ๊ฐ๋จํ๊ณ ํ๋จ์ ๋๋ ์๋์ง๋ ์ ์ต๋๋ค.
๊ทธ๋์ ๋๋ค์ ์ํฉ์์ ์ข์ ์๊ณ ๋ฆฌ์ฆ์ด๋ฉฐ ์ค์ ๋ก๋ ๋ง์ด ์ฐ์ ๋๋ค.
ํ์ง๋ง ์ ์ด๋ ์๋ฐ์ JVM์์๋ ์ฐธ์กฐ ์นด์ดํ ์ ์ฐ์ง ์์ต๋๋ค.
์ด ๊ฐ๊ฒฐํ ์๊ณ ๋ฆฌ์ฆ์๋ ๊ณ ๋ คํด์ผ ํ ํน์ด ์ํฉ์ด ์ ์ง ์๊ณ ,
๋ชจ๋ ์ํฉ์์ ๋ฌธ์ ์์ด ๋์ํ๊ฒ ํ๋ ค๋ฉด ๊ณ์ฐํ ๊ฒ ์๋นํ ๋์ด๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
์๋ฅผ ๋ค์ด ๊ฐ๋จํ ์ฐธ์กฐ ์นด์ดํ ๋ง์ผ๋ก๋ ์ํ ์ฐธ์กฐ ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ด๋ ต์ต๋๋ค.
ํด๋น ์ฝ๋๋ฅผ ๋ณด๋ฉด, A
์ B
๊ฐ์ฒด์๋ ๋ชจ๋ instance
๋ผ๋ ํ๋๊ฐ ์๊ณ ,
ํ๋๋ค์ ์๋ก์ ๊ฐ์ ํ ๋นํ ๋ค์ ๋ ๊ฐ์ฒด์ ์ฐธ์กฐ๋ฅผ ํด์ ํ์ต๋๋ค.
์ด ์์ ๋ถํฐ ์ธ๋ถ์์ ๋ ๊ฐ์ฒด์ ์ ๊ทผํ ๊ธธ์ด ์ฌ๋ผ์ง๋๋ค.
ํ์ง๋ง ๊ฐ์์ instance
์์ ์๋ก๋ฅผ ์ฐธ์กฐํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฐธ์กฐ ์นด์ดํฐ๋ ์์ง 0์ด ์๋๋๋ค.
๋ฐ๋ผ์ ์ฐธ์กฐ ์นด์ดํ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก๋ ๋ ์ด์ ๋ ๊ฐ์ฒด์ ์ ๊ทผํ ์ ์์์๋ ๋์ ํ์ํ์ง ๋ชปํฉ๋๋ค.
๐ ๋๋ฌ ๊ฐ๋ฅ์ฑ ๋ถ์ ์๊ณ ๋ฆฌ์ฆ
๋ค์ ์ค๋ช ๋๋ฆด ์๊ณ ๋ฆฌ์ฆ์ ๋๋ฌ ๊ฐ๋ฅ์ฑ ๋ถ์ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
์ค๋๋ ์ ์ฃผ๋ฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ค์ ๋ชจ๋ ์ด ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํฉ๋๋ค.
๋๋ฌ ๊ฐ๋ฅ์ฑ ๋ถ์ ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ๋ณธ ์์ด๋์ด๋
GC ๋ฃจํธ๋ผ๊ณ ํ๋ ๋ฃจํธ ๊ฐ์ฒด๋ค์ ์์ ๋ ธ๋ ์งํฉ์ผ๋ก ์ฐ๋ ๊ฒ์ ๋๋ค.
GC ๋ฃจํธ๋ก๋ถํฐ ๋๋ฌ ๋ถ๊ฐ๋ฅํ ๊ฐ์ฒด๋ ๋ ์ด์ ์ฌ์ฉํ ์ ์๋ ๊ฐ์ฒด์ธ ๊ฑธ ์๊ฒ ๋๊ณ ,
ํ์ ๋์์ด ๋ฉ๋๋ค.
์ด ๊ฒฝ์ฐ GC ๋ฃจํธ 1, 2๋ฒ๋ถํฐ ์์ํด์
๊ฐ์ฒด 1, 2, 6, 7๋ฒ์ ๋๋ฌํ ์ ์์ผ๋ ์ด์๋จ๊ณ
๋๋ฌ ๋ถ๊ฐ๋ฅํ ๊ฐ์ฒด์ธ 3, 4, 5๋ฒ์ ํ์ ๋์์ด ๋ฉ๋๋ค.
๐ Garbage Collection ์๊ณ ๋ฆฌ์ฆ
์ด๋ค ๊ฐ์ฒด๊ฐ ํ์ ๋์์ด ๋๋์ง ์์๋ดค์ผ๋,
์ด์ ์ด๋ค ๋ฐฉ์์ผ๋ก ํ์๋๋์ง์ ๋ํด ์์๋ด ์๋ค.
๐ Mark-sweep ์๊ณ ๋ฆฌ์ฆ
๋จผ์ Mark-sweep ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
์ด๋ฆ์ฒ๋ผ ์ด ์๊ณ ๋ฆฌ์ฆ์ ์์ ์ ํ์์ ์ธ๊ธฐ๋ผ๋ ๋ ๋จ๊ณ๋ก ๋๋ ์งํํฉ๋๋ค.
๋จผ์ ํ์ํ ๊ฐ์ฒด๋ค์ ๋ชจ๋ ํ์ํ ๋ค์,
ํ์๋ ๊ฐ์ฒด๋ค์ ์ธ์ด ๋ด๋ ์์ ๋๋ค.
๋ค์ด์ด ๋์ฌ ์ปฌ๋ ์ ์๊ณ ๋ฆฌ์ฆ๋ค์ด Mark-sweep ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ์ด๋ก
๊ทธ ๋จ์ ์ ๋ณด์ํ๋ ์์ผ๋ก ๋ฐ์ ํ๊ธฐ ๋๋ฌธ์ Mark-sweep์ ํฐ ๋จ์ ๋ ๊ฐ์ง๋ฅผ ์ง๊ณ ๋์ด๊ฐ๋๋ก ํ๊ฒ ์ต๋๋ค.
์ฒซ์งธ, ์คํ ํจ์จ์ด ์ผ์ ํ์ง ์์ต๋๋ค.
์๋ฐ Heap์ด ๋ค๋์ ๊ฐ์ฒด๋ก ๊ฐ๋ ์ฐจ ์๊ณ ๋๋ถ๋ถ์ด ํ์ ๋์์ด๋ผ๋ฉด,
ํ์ํ๋ ์ผ๋ ํ์ํ๋ ์ผ๋ ๋ชจ๋ ์ปค์ง๋๋ค.
์ฆ, ๊ฐ์ฒด๊ฐ ๋ง์์ง์๋ก ํ์ํ๊ณ ์ธ์ด ๋ด๋ ํจ์จ์ด ๋จ์ด์ง๋ ๊ตฌ์กฐ์ ๋๋ค.
๋์งธ, ๋ฉ๋ชจ๋ฆฌ ํํธํ๊ฐ ์ฌํฉ๋๋ค.
๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ์ธ๊ณ ๊ฐ ์๋ฆฌ์๋ ๋ถ์ฐ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ ํํธ์ด ๋ง๋ค์ด์ง๋๋ค.
ํํธํ๊ฐ ๋๋ฌด ์ฌํ๋ฉด ํ๋ก๊ทธ๋จ์ด ํฐ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๋ ค ํ ๋
์ถฉ๋ถํ ํฌ๊ธฐ์ ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐพ๊ธฐ๊ฐ ์ ์ ์ด๋ ค์์ง๊ณ ,
๊ทธ ๊ฒฐ๊ณผ ๋ ๋ค๋ฅธ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ ๋ฐํฉ๋๋ค.
๐ Mark-copy ์๊ณ ๋ฆฌ์ฆ
Marp-sweep ์๊ณ ๋ฆฌ์ฆ์ ์ฒซ ๋ฒ์งธ ๋จ์ ์ด์๋
ํ์ํ ๊ฐ์ฒด๊ฐ ๋ง์์ง์๋ก ํจ์จ์ด ๋จ์ด์ง๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ ๊ฒ์ด Mark-copy ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
์ด ์๊ณ ๋ฆฌ์ฆ์, ๊ฐ์ฉ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋๊ฐ์ ํฌ๊ธฐ์ ๋ ๋ธ๋ก์ผ๋ก ๋๋ ํ ๋ฒ์ ํ ๋ธ๋ก๋ง ์ฌ์ฉํฉ๋๋ค.
๊ทธ๋ฌ๋ค ํ์ชฝ ๋ธ๋ก์ด ๊ฝ ์ฐจ๋ฉด
์ด์๋จ์ ๊ฐ์ฒด๋ค๋ง ๋ค๋ฅธ ๋ธ๋ก์ ๋ณต์ฌํ๊ณ ๊ธฐ์กด ๋ธ๋ก์ ํ ๋ฒ์ ์ฒญ์ํฉ๋๋ค.
๋๋ค์ ๊ฐ์ฒด๊ฐ ์ด์๋จ๋๋ค๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋ณต์ฌ์ ์๋นํ ์๊ฐ์ ํ๋นํ๋ ๋ฐ๋ฉด,
๋๋ค์๊ฐ ํ์๋๋ค๋ฉด ์์กดํ ์์์ ๊ฐ์ฒด๋ง ๋ณต์ฌํ๋ฉด ๋ฉ๋๋ค.
๋์ฑ์ด ๋ณต์ฌ ๊ณผ์ ์์ ๊ฐ์ฒด๋ค์ด ๋ฉ๋ชจ๋ฆฌ์ ํ์ชฝ ๋์์๋ถํฐ ์ฐจ๊ณก์ฐจ๊ณก ์์ด๊ธฐ ๋๋ฌธ์
๊ณจ์น ์ํ ๋ฉ๋ชจ๋ฆฌ ํํธํ ๋ฌธ์ ๋ก๋ถํฐ ํด๋ฐฉ๋ฉ๋๋ค.
์ด ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๊ธฐ๋ ์ฝ๊ณ ์คํ ํจ์จ๋ ์ข์ต๋๋ค.
ํ์ง๋ง ๊ฐ์ฉ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๋ฐ์ผ๋ก ์ค์ฌ ๋ญ๋น๊ฐ ์ฌํ๋ค๋ ๋จ์ ๋ ์์ต๋๋ค.
(์ด ๋จ์ ์ ๋ณด์ํ์ฌ ๋๋ฒจ๋กญํ ์๊ณ ๋ฆฌ์ฆ์ด ๋์ค๊ธด ํ์ง๋ง, ์ฌ๊ธฐ์ ๋์ด๊ฐ๋๋ก ํ๊ฒ ์ต๋๋ค.)
๐ Mark-compact ์๊ณ ๋ฆฌ์ฆ
์ด๋ฒ์๋ Mark-sweep์ ๋ ๋ฒ์งธ ๋จ์ ์ด์๋
๋ฉ๋ชจ๋ฆฌ ํํธํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ Mark-compact ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
ํ์ ๋จ๊ณ๋ Mark-sweep๊ณผ ๊ฐ๊ณ
compact ๋จ๊ณ์์ ์์กดํ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ์ชฝ ๋์ผ๋ก ๋ชจ์ ๋ค์,
๋๋จธ์ง ๊ณต๊ฐ์ ํ๊บผ๋ฒ์ ๋น์๋๋ค.
Mark-sweep๊ณผ์ ํต์ฌ์ ์ธ ์ฐจ์ด๋ ๋ฉ๋ชจ๋ฆฌ ์ด๋์ด ์ผ์ด๋๋ค๋ ์ ์ ๋๋ค.
๐ Garbage Collection์ ์ธ์ ์ผ์ด๋ ๊น?
์ด๋ค ๊ฐ์ฒด๋ฅผ, ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํ์ํ๋์ง ์์๋ดค์ผ๋
๋ง์ง๋ง์ผ๋ก ์ธ์ ์ด ๊ฐ๋น์ง ์ปฌ๋ ์ ์ด ์ผ์ด๋๋์ง์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
์ด๋ฅผ ์์๋ณด๊ธฐ ์ ์ ํ ๊ฐ์ง ์ด๋ก ๋จผ์ ๋ณด๊ณ ๋์ด๊ฐ๊ฒ ์ต๋๋ค.
๐ ์ธ๋ ๋จ์ ์ปฌ๋ ์ ์ด๋ก
ํ์ฌ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ ๋๋ถ๋ถ ์ธ๋ ๋จ์ ์ปฌ๋ ์ ์ด๋ก ์ ๊ธฐ์ดํด ์ค๊ณ๋์์ต๋๋ค.
์ธ๋ ๋จ์ ์ปฌ๋ ์ ์ด๋ก ์ ๋ณธ์ง์
๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์ ๋ ๊ฐ์ง ๊ฐ์ ์ด ๋ฟ๋ฆฌ๋ฅผ ์ด๋ฃน๋๋ค.
์ฒซ ๋ฒ์งธ, ๋๋ค์ ๊ฐ์ฒด๋ ์ผ์ฐ ์ฃฝ๋๋ค.
๋ ๋ฒ์งธ, ๊ฐ๋น์ง ์ปฌ๋ ์ ๊ณผ์ ์์ ์ด์๋จ์ ํ์๊ฐ ๋์ด๋ ์๋ก ๋ ์ค๋ ์ด ๊ฐ๋ฅ์ฑ์ด ์ปค์ง๋ค.
์ด ์ด๋ก ์ ๋ฐ๋ผ ์๋ฐ Heap์ ๋ช ๊ฐ์ ์์ญ์ผ๋ก ๋๋๊ณ ,
๊ฐ์ฒด๋ค์ ๋์ด์ ๋ฐ๋ผ ๊ฐ๊ธฐ ๋ค๋ฅธ ์์ญ์ ํ ๋นํ๋ ๊ฒ์ ๋๋ค.
(์ฌ๊ธฐ์ ๋์ด๋, ๊ฐ๋น์ง ์ปฌ๋ ์ ์์ ์ด์๋จ์ ํ์๋ฅผ ๋งํฉ๋๋ค.)
์์ญ ์์ ๊ฐ์ฒด ๋๋ถ๋ถ์ด ๊ณง๋ฐ๋ก ์ฃฝ์ ์ด๋ช ์ด๋ผ๋ฉด
๊ทธ ๊ฐ์ฒด๋ค์ ํ๋ฐ ๋ชฐ์๋๊ณ ๊ด๋ฆฌํ๋ฉฐ
์ด์๋จ๋ ์์์ ๊ฐ์ฒด๋ฅผ ์ ์งํ๋ ๋ฐฉ๋ฒ์ ์ง์คํ๋ ํธ์ด ์ ๋ฆฌํ ๊ฒ์ ๋๋ค.
๋ํ, ํ ๋ฒ ์ด์๋จ์ ๊ฐ์ฒด๋ ํต๊ณ์ ์ผ๋ก ์ ์ฃฝ์ง ์์ผ๋ ๋ค๋ฅธ ์์ญ์ ๋ฐ๋ก ๋ชจ์๋๊ณ ,
๊ฐ์ ๋จธ์ ์ด ๊ทธ ์์ญ์ ํ์ํ๋ ๋น๋๋ฅผ ์ค์ด๋ ๊ฒ์ ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ๋๋ ์ ์ฒด ์๊ฐ๋ ์ค์ด๊ณ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ๋ ํจ์จ์ ์ผ๋ก ์ด์ฉํ ์ ์์ต๋๋ค.
์ธ๋ ๋จ์ ์ปฌ๋ ์ ์ด๋ก ์ ๊ฐ์ ๋จธ์ ์ ์ ์ฉํ๊ธฐ ์ํด ์๋ฐ Heap์ ์ต์ ๋ ๊ฐ์ ์์ญ์ผ๋ก ๋๋๋๋ค.
๐ New Generation๊ณผ Old Generation
๋ฐ๋ก New Generation๊ณผ Old Generation์ ๋๋ค.
์ด๋ฆ์์ ์ ์ ์๋ฏ์ด
New Generation์์๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ๋๋ง๋ค ๋ค์์ ๊ฐ์ฒด๊ฐ ์ฃฝ๊ณ
์ด์๋จ์ ์์๋ง์ด Old Generation์ผ๋ก ์น๊ฒฉ๋ฉ๋๋ค.
์ด New Generation์ ๋๋ค์
Eden, Survival 0, Survival 1 ์์ญ์ผ๋ก ๋๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ , ์๋ก์ด ๊ฐ์ฒด๋ Eden ์์ญ์ ํ ๋น๋ฉ๋๋ค.
์๋ก์ด ๊ฐ์ฒด๊ฐ ์๊ธฐ๋ฉด ๋ชจ๋ Eden ์์ญ์ ํ ๋น๋๊ณ ,
์ด Eden์ด๋ผ๋ ์์ญ์ด ๊ฝ ์ฐจ๋ฉด ๊ฐ๋น์ง ์ปฌ๋ ์ ์ด ๋ฐ์ํฉ๋๋ค.
์ด๋ ์ผ์ด๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ Minor GC๋ผ๊ณ ํฉ๋๋ค.
์ด๋ฒ ๊ฐ๋น์ง ์ปฌ๋ ์ ์์ ์ด์๋จ์ ๊ฐ์ฒด๋ Survival 0์ผ๋ก ์ฎ๊ฒจ์ง๊ณ ,
์ด์๋จ์ง ๋ชปํ ๊ฐ์ฒด๋ ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ๋ฉ๋๋ค.
์ด ๊ณผ์ ์ด ๊ณ์ํด์ ๋ฐ๋ณต๋๊ณ ,
(์ค๊ฐ ์๋ต...)
Survival 0 ์์ญ์ด ๊ฝ ์ฐจ๋ ์๊ฐ์ด ์ต๋๋ค.
๊ทธ๋ผ ์ด๋ ๋๋ค์ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ด ์ผ์ด๋ฉ๋๋ค.
์ด๋ฒ ๊ฐ๋น์ง ์ปฌ๋ ์ ์์ ์ด์๋จ์ ๊ฐ์ฒด๋ค์ Survival 1 ์์ญ์ผ๋ก ์ด๋ํ๋ฉด์ Age ๊ฐ์ด ์ฆ๊ฐํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์ Eden ์์ญ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ด๊ณ ,
๊ฐ๋น์ง ์ปฌ๋ ์ ์ด ์ผ์ด๋ฉ๋๋ค.
์ด๋ฒ์๋ Survival 0์ด ์๋, ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ฌ์๋ Survival 1 ์์ญ์ ์ด์๋จ์ ๊ฐ์ฒด๋ค์ด ์ฎ๊ฒจ์ง๋๋ค.
์ง๊ธ Survival 0๊ณผ Survival 1 ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด,
์์์ ์ดํด๋ดค๋ Mark-copy ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๊ณ ์๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์ด Survival 1 ์์ญ์ด ๋๋ค์ ์ฐจ๊ฒ ๋๋ฉด,
์ฌ๊ธฐ์ ์ด์๋จ์ ๊ฐ์ฒด๋ค์ด
๋๋ค์ Age ๊ฐ์ด ์ฆ๊ฐํ์ฌ Survival 0 ์์ญ์ผ๋ก ์ด๋ํฉ๋๋ค.
์ด๋ ๊ฒ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ด ๊ณ์ ์ผ์ด๋๋ฉฐ Age ๊ฐ์ด ์ฆ๊ฐํ๋ค๊ฐ
ํน์ Age๋ฅผ ๋์ด์๋ฉด
๊ทธ๋ Old Generation์ผ๋ก ์น๊ฒฉ๋ฉ๋๋ค.
Old Generation ๋ํ ๋ค ์ฐจ๊ฒ ๋๋ฉด ๊ฐ๋น์ง ์ปฌ๋ ์ ์ด ์ผ์ด๋๋๋ฐ,
์ด๋ ๋ฐ์ํ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ Major GC๋ผ๊ณ ํฉ๋๋ค.
Major GC์์๋ Mark-compact ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํฉ๋๋ค.
ํ์ง๋ง Mark-compact ์๊ณ ๋ฆฌ์ฆ์ ๋ฉ๋ชจ๋ฆฌ ์ด๋์ด ์ผ์ด๋๋ค๊ณ ํ์ต๋๋ค.
์ค๋ ์ฐ ๊ฐ์ฒด๋ค์ ๊ด๋ฆฌํ๋ ๊ณต๊ฐ์ด๋ฏ๋ก,
Marjor GC์์๋ ํ์ ๋๋ง๋ค ์ด์๋จ๋ ๊ฐ์ฒด๊ฐ ์๋นํ ๋ง์ ๊ฒ์ธ๋ฐ
์ด๋ ๊ฒ ๋ง์ ๊ฐ์ฒด๋ฅผ ์ด๋์ํค๊ธฐ์๋ ๋ถ๋ด๋ ๊ฒ์ ๋๋ค.
๋ฐ๋ผ์ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ํํธํ๋ฅผ ๊ฐ๋ดํ๋ฉด์ Mark-sweep์ ์ฌ์ฉํ๋ค๊ฐ
๊ฐ์ฒด ํ ๋น์ ์ํฅ์ ์ค ๋งํผ ํํธํ๊ฐ ์ฌํด์ง๋ฉด Mark-compact๋ฅผ ๋๋ ค ์ฐ์๋ ๊ณต๊ฐ์ ํ๋ณดํ๊ฒ ๋ฉ๋๋ค.
๐ ๋ง๋ฌด๋ฆฌ
๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ด๋ฌํ ๋ฐฉ๋ฒ์ผ๋ก, ์ด๋ฌํ ๊ณผ์ ์ด ๋ฐ๋ณต๋๋ฉด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
๐ ์ฐธ๊ณ
์ ํ๋ธ <๋์ JVM์ Garbage Collector> - https://www.youtube.com/watch?v=vZRmCbl871I&t=480s
๋์ <JVM ๋ฐ๋ฐ๋ฅ๊น์ง ํํค์น๊ธฐ> - https://product.kyobobook.co.kr/detail/S000213057051