# Meta space
๋ชฉ์ฐจ
JVM์ ์ฌ๋ฌ ๋ฉ๋ชจ๋ฆฌ ์์ญ ์ค์ PermGen ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด ์์ด์ง๊ณ Metaspace ์์ญ์ด ์๊ฒผ๋ค.
# 1. PermGen
๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ
- permanent generation**, ํด๋์ค ๋ฉํ๋ฐ์ดํฐ**๋ฅผ ๋ด๋ ๊ณณ.
- Heap ์์ญ์ ์ํจ.
- ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ ํ๋ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๊ณ ์์.
- ๋์ ์ผ๋ก ํด๋์ค๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ PermGen ์์ญ์ด ๊ฐ๋ ์ฐจ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ์ ์๋ค. ๋ฉ๋ชจ๋ฆฌ ์๋ฌ ๋ฐ์.
- ์์ ๋ฌธ์ ๋ฅผ ๊ทผ๋ณธ์ ์ผ๋ก ํด๊ฒฐํ๋ ค๋ฉด PermGen ์ฌ์ด์ฆ๋ฅผ ๋๋ฆฌ๋ ๊ฒ์ด์๋๋ผ ํด๋์ค๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๋ ์ฝ๋๋ฅผ ์์ ํด์ผํ๋ค.
- XX:PermSize=N, PermGen ์ด๊ธฐ ์ฌ์ด์ฆ ์ค์
- XX:MaxPermSize=N, PermGen ์ต๋ ์ฌ์ด์ฆ ์ค์
# 2. Metaspace
๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ
- ํด๋์ค ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ๊ณณ.
- Heap ์์ญ์ด ์๋๋ผ, Native ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ค.
- ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ ํ๋ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๋ค.
- Native ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด ๊ฐ๋์ฐฐ ๋๊น์ง ํ์ํ ๋งํผ ๊ณ์ ๋์ด๋๋ค.
- Native ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด ๊ฐ๋์ฐจ๊ฒ ๋๋ฉด ์๋ฒ๊ฐ ์ฃฝ๋ ์น๋ช ์ ์ธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
- ๋ฐ๋ผ์ ์ต์ํ Metaspace์ ์ต๋ ์ฌ์ด์ฆ๋ ์ค์ ํด์ฃผ์ด์ผํ๋ค.
- ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๋ ค๋ฉด ๋ชจ๋ํฐ๋ง ํ์ฌ ์ต์ ์ Metaspace ๊ฐ์ ์ฐพ์ ์ต๋๊ฐ์ผ๋ก ์ค์ ํ๋ ๊ฒ์ด๋ค. ๋ง์ฝ ๋ชจ๋ํฐ๋ง์ผ๋ก ๋์ถํด๋ธ ์ด ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ์ด๋๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์์ฌํด๋ณด์์ผ ํ๋ค.
- ์๋ฐ 8๋ถํฐ๋ PermGen ๊ด๋ จ java ์ต์ ์ ๋ฌด์ํ๋ค.
- XX:MetaspaceSize=N, Metaspace ์ด๊ธฐ ์ฌ์ด์ฆ ์ค์ .
- XX:MaxMetaspaceSize=N, Metaspace ์ต๋ ์ฌ์ด์ฆ ์ค์ .
Ref.
- https://code-overflow.tistory.com/entry/์๋ฐ8-๋ฉ๋ชจ๋ฆฌ-๊ด๋ฆฌJava-8-Memory-Management-๋ณํ?category=796033 (opens new window)
- ๋ ์๋ฐ, Java 8, ๋ฐฑ๊ธฐ์ (opens new window)
- PermGen Elimination project is promoting (opens new window)
- [Java Memory Profiling์ ๋ํ์ฌ]โ JVM ๋ฉ๋ชจ๋ฆฌ ์ดํด์ ์ผ์ด์ค ์คํฐ๋ (opens new window)
- [Java Memory Profiling์ ๋ํ์ฌ]โก ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ํฐ๋ง๊ณผ ์์ธ๋ถ์ (opens new window)
- Java 8: From PermGen to Metaspace (opens new window)
- One important change in Memory Management in Java 8 (opens new window)
โ ๋ฐฐ์ด ๋ณ๋ ฌ ์ ๋ ฌ ArrayList โ