๊ฐ์ฒด ์ธ๋ ์์
Java ๊ฐ๋น์ง ์์ง๊ธฐ๋ ์๋ช ๋ณ๋ก ๊ฐ์ฒด๋ฅผ ๋ถ๋ฅํ ์ ์๋ ์ธ๋๋ณ ๊ฐ๋น์ง ์์ง ์ ๋ต์ ๊ตฌํํฉ๋๋ค.
JVM์์ ์ด๋ฌํ ์๊ตฌ(๋ชจ๋ ๊ฐ์ฒด๋ฅผ ํ์ํ๊ณ ์์ถํด์ผ ํจ)๋ ๋นํจ์จ์ ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค. ๋ง์ ์์ ๊ฐ์ฒด๊ฐ ํ ๋น๋๋ฉด ํด๋น ๋ชฉ๋ก์ด ๋์ด๋ ๊ฐ๋น์ง ์์ง ์๊ฐ์ด ๋์ด๋ฉ๋๋ค. ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ํ ๊ฒฝํ์ ๋ถ์์ ๋ฐ๋ฅด๋ฉด Java์ ๋๋ถ๋ถ์ ๊ฐ์ฒด๋ ์๋ช ์ด ์งง์ต๋๋ค.
JVM์ ํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ธ ๋ถ๋ถ์ผ๋ก ๋๋ฉ๋๋ค.
์ ์ ์ธ๋
์๋ก ์์ฑ๋ ๊ฐ์ฒด๋ ์ ์ ์ธ๋์์ ์์๋ฉ๋๋ค. ์ ์ ์ธ๋๋ ๋ค์ ๋ ๋ถ๋ฅ๋ก ๋๋๋ค.
- Eden Space - ๋ชจ๋ ์ ๊ฐ์ฒด๊ฐ ์ฌ๊ธฐ์์ ์์๋๋ฉฐ ์ด๊ธฐ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ ๋น๋ฉ๋๋ค.
Survivor Spaces (FromSpace ๋ฐ ToSpace) - ๊ฐ์ฒด๋ ํ๋์ ๊ฐ๋น์ง ์์ง ์ฃผ๊ธฐ์์ ์ด์๋จ์ ํ Eden์์ ์ฌ๊ธฐ๋ก ์ด๋๋ฉ๋๋ค.
๊ฐ์ฒด๊ฐ ์ ์ ์ธ๋๋ก๋ถํฐ ๊ฐ๋น์ง ์์ง๋๋ ๊ณผ์ ์ ๋ง์ด๋ ๊ฐ๋น์ง ์์ง ์ด๋ฒคํธ๋ผ๊ณ ํฉ๋๋ค.
Eden์ ๊ณต๊ฐ์ด ๊ฐ์ฒด๋ก ์ฑ์์ง๋ฉด ์์ ๊ฐ๋น์ง ์์ง์ด ์ํ๋ฉ๋๋ค. ๋ชจ๋ ์ฃฝ์ ๊ฐ์ฒด๋ ์ ๊ฑฐ๋๊ณ ๋ชจ๋ ์ด์์๋ ๊ฐ์ฒด๋ ๋๋จธ์ง ๋ ๊ณต๊ฐ ์ค ํ๋๋ก ์ด๋๋ฉ๋๋ค. ์์ GC๋ ๋ํ ์๋ฐ์ด๋ฒ ๊ณต๊ฐ์ ๊ฐ์ฒด๋ฅผ ํ์ธํ๊ณ ๋ค๋ฅธ(๋ค์) ์๋ฐ์ด๋ฒ ๊ณต๊ฐ์ผ๋ก ์ด๋ํฉ๋๋ค.
๋ค์ ์์๋ฅผ ์๋ก ๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
- ์๋ด์๋ ๋ ๊ฐ์ง ์ ํ(์ฐ ๊ฒ๊ณผ ์ฃฝ์ ๊ฒ)์ ๋ฌผ์ฒด๊ฐ ์์ต๋๋ค.
- ์์ GC๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ชจ๋ ์ฃฝ์ ๊ฐ์ฒด๊ฐ Eden์์ ์ ๊ฑฐ๋ฉ๋๋ค. ๋ชจ๋ ์ด์์๋ ๊ฐ์ฒด๋ ๊ณต๊ฐ-1(FromSpace)๋ก ์ด๋ํฉ๋๋ค. Eden๊ณผ space-2๋ ์ด์ ๋น์ด ์์ต๋๋ค.
- ์๋ก์ด ๊ฐ์ฒด๊ฐ ์์ฑ๋์ด Eden์ ์ถ๊ฐ๋ฉ๋๋ค. Eden๊ณผ space-1์ ์ผ๋ถ ๊ฐ์ฒด๊ฐ ์ฃฝ์ต๋๋ค.
- ์์ GC๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ชจ๋ ์ฃฝ์ ๊ฐ์ฒด๊ฐ Eden๊ณผ space-1์์ ์ ๊ฑฐ๋ฉ๋๋ค. ๋ชจ๋ ์ด์์๋ ๊ฐ์ฒด๋ ๊ณต๊ฐ-2(ToSpace)๋ก ์ด๋๋ฉ๋๋ค. Eden๊ณผ space-1์ ๋น์ด ์์ต๋๋ค.
๋ฐ๋ผ์ ์ธ์ ๋ ์ง ์์กด์ ๊ณต๊ฐ ์ค ํ๋๋ ํญ์ ๋น์ด ์์ต๋๋ค. ์์กด์๊ฐ ์์กด์ ๊ณต๊ฐ์ ํตํด ์ด๋ํ๊ธฐ ์ํ ํน์ ์๊ณ๊ฐ์ ๋๋ฌํ๋ฉด ์ด์ ์ธ๋๋ก ์ด๋ํฉ๋๋ค.
-Xmn ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ ์ธ๋ ํฌ๊ธฐ๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค .
์ด์ ์ธ๋
์๋นํ ์๊ฐ ๋์(์: ํ๋ก๊ทธ๋จ ์๋ช ์ ๋๋ถ๋ถ) ์ด์์๋ ๊ฐ์ฒด๋ ๊ฒฐ๊ตญ ์ค๋๋ ๊ฐ์ฒด(100์ธ ์ด์)๊ฐ ๋ฉ๋๋ค. ์ผ๋ฐ ์ธ๋๋ผ๊ณ ๋ ํ๋ฉฐ ์ค๋ซ๋์ ์์กด์ ๊ณต๊ฐ์ ๋จ์ ์๋ ๊ฐ์ฒด๋ฅผ ํฌํจํฉ๋๋ค.
๊ฐ์ฒด์ ์๋ช ์๊ณ๊ฐ์ ๊ฐ์ฒด๊ฐ ์ด์ ์ธ๋๋ก ์ด๋๋๊ธฐ ์ ์ ๊ฑฐ์ณ์ผ ํ๋ ๊ฐ๋น์ง ์์ง ์ฃผ๊ธฐ ์๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ๊ฐ์ฒด๊ฐ ์ด์ ์ธ๋์์ ๊ฐ๋น์ง๋ก ๋ณด๋ด์ง๋ ๊ณผ์ ์ ๋ฉ์ธ ๊ฐ๋น์ง ์์ง ์ด๋ฒคํธ๋ผ๊ณ ํฉ๋๋ค.
-Xms ๋ฐ -Xmx ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์ด๊ธฐ ๋ฐ ์ต๋ ํ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค .
Java๋ ์ธ๋๋ณ ๊ฐ๋น์ง ์์ง์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด๊ฐ ๋ ๋ง์ ๊ฐ๋น์ง ์์ง ์ด๋ฒคํธ๋ฅผ ๊ฒฝํํ ์๋ก ํ์์ ๋ ๋ง์ด ์ด๋ํฉ๋๋ค. ๊ทธ๋ ์ ์ ์ธ๋์์ ์์ํ์ฌ ์ถฉ๋ถํ ์ค๋ ์ด๋ฉด ๊ฒฐ๊ตญ ์ ๊ท ์ธ๋๋ก ๋๋ฉ๋๋ค.
๊ณต๊ฐ๊ณผ ์ธ๋ ๊ฐ์ ๊ฐ์ฒด ํ๋ณด๋ฅผ ์ดํดํ๋ ค๋ฉด ๋ค์ ์๋ฅผ ๊ณ ๋ คํ์ญ์์ค.
๊ฐ์ฒด๊ฐ ์์ฑ๋๋ฉด ๋จผ์ Young Generation์ Eden ๊ณต๊ฐ์ ๋ฐฐ์น๋ฉ๋๋ค.
์์ ๊ฐ๋น์ง ์์ง์ด ๋ฐ์ํ๋ ์ฆ์ Eden์ ์ด์์๋ ๊ฐ์ฒด๊ฐ FromSpace๋ก ์ด๋๋ฉ๋๋ค. ๋ค์ ์ฌ์ํ ๊ฐ๋น์ง ์์ง์ด ๋ฐ์ํ๋ฉด Eden๊ณผ ์ฐ์ฃผ์ ์ด์์๋ ๊ฐ์ฒด๊ฐ ToSpace๋ก ์ด๋๋ฉ๋๋ค.
์ด ์ฃผ๊ธฐ๋ ํน์ ํ์๋งํผ ๊ณ์๋ฉ๋๋ค. ์ด ์์ ์ดํ์๋ ๊ฐ์ฒด๊ฐ ์ฌ์ ํ "์๋น์ค ์ค"์ด๋ฉด ๋ค์ ๊ฐ๋น์ง ์์ง ์ฃผ๊ธฐ์์ ๊ฐ์ฒด๋ฅผ ์ด์ ์ธ๋ ๊ณต๊ฐ์ผ๋ก ์ด๋ํฉ๋๋ค.
์๊ตฌ ์์ฑ ๋ฐ ๋ฉํ์คํ์ด์ค
ํด๋์ค ๋ฐ ๋ฉ์๋์ ๊ฐ์ ๋ฉํ๋ฐ์ดํฐ๋ ์๊ตฌ ์์ฑ์ ์ ์ฅ๋ฉ๋๋ค. JVM์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ๋ ํด๋์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐํ์ ์ ์ด๋ฅผ ์ฑ์๋๋ค. ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ํด๋์ค๋ ์๊ตฌ ์์ฑ์์ ๊ฐ๋น์ง๋ก ์ด๋ํ ์ ์์ต๋๋ค.
-XX:PermGen ๋ฐ -XX:MaxPermGen ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์๊ตฌ ์์ฑ์ ์ด๊ธฐ ๋ฐ ์ต๋ ํฌ๊ธฐ๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค .
๋ฉํ ๊ณต๊ฐ
Java 8๋ถํฐ PermGen ๊ณต๊ฐ์ MetaSpace ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ผ๋ก ๋์ฒด๋์์ต๋๋ค. ๊ตฌํ์ PermGen๊ณผ ๋ค๋ฆ ๋๋ค. ์ด ํ ๊ณต๊ฐ์ ์ด์ ์๋์ผ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด PermGen ํ ๊ณต๊ฐ์ ์ ํ๋ ํฌ๊ธฐ๋ก ์ธํด ๋ฐ์ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ๋ฌธ์ ๋ฅผ ํผํ ์ ์์ต๋๋ค. ๋ฉํ์คํ์ด์ค ๋ฉ๋ชจ๋ฆฌ๋ ๊ฐ๋น์ง ์์ง๋ ์ ์์ผ๋ฉฐ ๋ ์ด์ ์ฌ์ฉํ์ง ์๋ ํด๋์ค๋ ๋ฉํ์คํ์ด์ค๊ฐ ์ต๋ ํฌ๊ธฐ์ ๋๋ฌํ๋ฉด ์๋์ผ๋ก ์ ๋ฆฌ๋ฉ๋๋ค.