garbageCollector
Last updated
Last updated
์ ์ฐธ๊ณ ํ์ต๋๋ค.
JRE๋ JVM ์ด ์๋ฐ ํ๋ก๊ทธ๋จ์ ๋์์ํฌ ๋ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ๋ค๊ณผ ๊ธฐํ ํ์ผ๋ค์ ๊ฐ์ง๊ณ ์๋ค. JRE๋ JVM์ ์คํํ๊ฒฝ์ ๊ตฌํํ๋ค๊ณ ํ ์ ์๋ค. ๊ทธ๋ฌ๋ ์ ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ๋ฐ์๋ ์ฌ์ฉํ ์ ์๋ค. ๊ตฌ์ฑ์์
์๋ฐ API
JVM
JDK๋ ์๋ฐ์ ๋ชจ๋ ๊ธฐ๋ฅ์ ๊ฐ์ถ SDK์ด๋ค. JDK๋ JRE + ๊ฐ๋ฐ์ ์ํด ํ์ํ ๋๊ตฌ(javac, java๋ฑ)๋ค์ ํฌํจํ๋ค. ๋ฐ๋ผ์ ํ๋ก๊ทธ๋๋ฐ + ์คํ์ด ๊ฐ๋ฅํ๋ค.
๋๋ก๋ ์ปดํจํฐ์์ Java ๊ฐ๋ฐ์ ์ํํ ๊ณํ์ด ์๋๋ผ๋ JDK๊ฐ ํ์ํ ์ํฉ์ด ์กด์ฌํ๋ค. ์๋ฅผ ๋ค์ด, JSP๋ก ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ ๋ด์์ Java ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ด ์ํฉ์์๋ ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๊ฐ JSP๋ฅผ Java ์๋ธ๋ฆฟ์ผ๋ก ๋ณํํ๊ณ , JDK๋ฅผ ์ฌ์ฉํ์ฌ ์๋ธ๋ฆฟ์ ์ปดํ์ผํด์ผํ๋ฏ๋ก JDK๊ฐ ํ์ํ๋ค.
์๋ฐ ์๋ธ๋ฆฟ(Servlet)์ ์๋ฐ๋ฅผ ์ฌ์ฉํ์ฌ ์นํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๋ ์๋ฒ์ธก ํ๋ก๊ทธ๋จ์ ๋งํ๋ค. ์๋ก, ์คํ๋ง๋ถํธ์์๋ DispatcherServlet์ ์ฌ์ฉํด MVC๋ฅผ ๊ด๋ฆฌํ๋ค.
์๋ฐ ๋ฐ์ดํธ์ฝ๋๋ฅผ ํด์ํ๊ณ ์คํํ๋ ํ๋ก๊ทธ๋จ
๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ, Garbage Collector ์ํ
์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ํด๋์ค ๋ก๋(Class Loader)๋ฅผ ํตํด ์ฝ์ด ๋ค์ฌ์ ์๋ฐ API์ ํจ๊ป ์คํํ๋ ๊ฒ
์๋ฐ ๋ฐํ์ ์คํ์ค ๋์ ์ผ๋ก ํ ๋นํ ๋ฉ๋ชจ๋ฆฌ ์์ญ ์ค ์ฌ์ฉํ์ง ์๋ ์์ญ์ ํ์งํ์ฌ ํด์ ํ๋ ๊ธฐ๋ฅ
์ ์ ์ผ๋ก ํ ๋นํ ๋ฉ๋ชจ๋ฆฌ ์์ญ
์์ ํ์ ์ ๋ฐ์ดํฐ๊ฐ ๊ฐ๊ณผ ํจ๊ป ํ ๋น, Heap์์ญ์ ์์ฑ๋ Objectํ์ ์ ๋ฐ์ดํฐ์ ์ฐธ์กฐ ๊ฐ ํ ๋น
๋์ ์ผ๋ก ํ ๋นํ ๋ฉ๋ชจ๋ฆฌ ์์ญ
๋ชจ๋ Object ํ์ ์ ๋ฐ์ดํฐ๊ฐ ํ ๋น, Heap์์ญ์ Object๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฐธ์กฐ ๋ณ์๊ฐ Stack์ ํ ๋น
(์ฐธ๊ณ ๋ก ์ฝํ๋ฆฐ์์๋ ํ๋ก๊ทธ๋๋ฐ ๋จ๊ณ์์ ์์ ํ์ , ๋ํผ ํ์ ์ ๊ตฌ๋ถํ์ง ์๋๋ค. ์ปดํ์ผ ์์ ์ฝํ๋ฆฐ์ด ์์ ํ์ ๋๋ ๋ํผ ํ์ ์ผ๋ก ์๋๋ณํํ๋ค.)
Mark : Garbage Collector๊ฐ Stack์ ๋ชจ๋ ๋ณ์๋ฅผ ์ค์บํ๋ฉด์ ๊ฐ๊ฐ ์ด๋ค ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ณ ์๋์ง ์ฐพ์์ ๋งํนํ๋ค.
Mark : Reachable Object๊ฐ ์ฐธ์กฐํ๊ณ ์๋ ๊ฐ์ฒด๋ ์ฐพ์์ ๋งํนํ๋ค.
Sweep : ๋งํน๋์ง ์์ ๊ฐ์ฒด๋ฅผ Heap์์ ์ ๊ฑฐํ๋ค.
Garbage Collector์ work๋ Mark์ Sweep์ ๋ฐ๋ณต๊ณผ์ ์ด๋ผ๊ณ ํ ์ ์๋ค.
category๋ List(Reachable Object)๋ฅผ ์ฐธ์กฐํ๊ณ ์๊ณ List(Reachable Object)๋ String(Reachable Object)์ ์ฐธ์กฐํ๊ณ ์๋ค.
์ด ๊ณผ์ ์์ ๋งํน๋์ง ์์ String("์๋ฆฌ") : Unreachable Object ๋ Sweep๋๋ค.
Garbage Collector๋ฅผ ์คํํ๊ธฐ ์ํด์ jvm์ด ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ ๋ฉ์ถ๋ ๊ฒ์ด๋ค. Stop The World๊ฐ ๋ฐ์ํ๋ฉด Garbage Collector๋ฅผ ์คํํ๋ ์ค๋ ๋๋ฅผ ์ ์ธํ ๋๋จธ์ง ์ค๋ ๋๋ ๋ชจ๋ ์์ ์ ๋ฉ์ถ๋ค. Garbage Collector ์์ ์ ์๋ฃํ ์ดํ์ ์ค๋จํ ์์ ์ ๋ค์ ์์ํ๋ค.
'์คํํ๋ ์ค๋ ๋๋ฅผ ์ ์ธํ ๋๋จธ์ง ์ค๋ ๋๋ ๋ชจ๋ ์์ ์ ๋ฉ์ถ๋ค'๋ ๊ฐ๋ ์ ๊ผญ Garbage Collector์ ์ค๋ ๋์๋ง ๊ตญํ๋๋ ๊ฒ์ด ์๋๋ผ ๋ค๋ฅธ ๊ณณ์๋ ์ฌ์ฉ๋ ์ ์๋ค. ex) ๋ฉ์์ง ๋ธ๋ก์ปค : ๋ฉ์์ง ๋ธ๋ก์ปค ํ ํฝ ๋ด์ ํํฐ์ ์ ๊ฐ ์ธ์คํด์ค๊ฐ consumeํ๋ ๊ฒฝ์ฐ
ํ ์ธ์คํด์ค์ ์ด์์ด ๋ฐ์ํ ๊ฒฝ์ฐ rebalancing์ ์งํํ๋๋ฐ ๋ชจ๋ ์ธ์คํด์ค์ ๋ํ ํํฐ์ ์์ ๊ถ์ ํ์ํ๊ณ ์งํํ๋ ๊ฒฝ์ฐ stop the world์ ๊ฐ๊น๋ค๊ณ ๋ณผ ์ ์๋ค.
kafka 2.3 ์ด์ ๋ฒ์ ์์๋ ์ด๋ฐ ์ ์ฒด์ ์ธ ์์ ๊ถ ํ์๊ฐ ์ด์๊ฐ ๋์๋ค๊ณ ํ๋ค. ์ด ๊ฒฝ์ฐ ๋ชจ๋ ์ธ์คํด์ค๊ฐ ์๋ํ์ง ์๋ ์๊ฐ์ด ์กด์ฌํด ์๋น์ค์ ์ฅ์ ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ด๋ค.