JVM Tunning 2
๐ฟ IBM JVM
optthruput GC
- ์ต์
- -Xgcpolicy: optthuput
- ์ค๋ช
- default GC ์๊ณ ๋ฆฌ์ฆ.
- mark-sweep-compact ๋จ๊ณ๋ฅผ ์ํํ์ฌ STW๋ก ์ผ์์ ์ง๋จ.
- application์ด ๋ณต์กํด์ง๊ณ ๊ทธ์ ๋ฐ๋ผ heap์ด ์ปค์ง๋ฉด GC ์ํ์ ๋ฐ๋ฅธ ๋ฉ์ถค์๊ฐ๋ ์ฆ๊ฐ
- ์ฅ์
- Throughput์ด ํฅ์
- ๋จ์
- STW๋ก ์ธํ Response Time ๊ฐ์
optavgpause GC
- ์ต์
- -Xgcpolicy: optavgpause
- ์ค๋ช
- opthuput์ ๋ด์ ์ธ STW ์๊ฐ์ ๋ณด์ํ๊ณ ์ ํจ
- GC๋ฅผ ์ํ Thread๋ฅผ ์ถ๊ฐ์ ์ผ๋ก ๋ง๋ค์ด์ concurrent mark๋ฅผ ์ํํ๊ฒ ํ์ฌ ์ค์ GC๊ฐ ๋ฐ์ํ ๋ ์ ์ฒด heap ์์ญ์ ๋ํ mark ์์ ์ ์ํํ ํ์์์ด sweep ๋จ๊ณ๋ฅผ ์ํ
- ์ฅ์
- ์ ๋ฐ์ ์ธ response time์ด ํฅ์๋จ
- ๋จ์
- Throughput(์ฒ๋ฆฌ๋)์ด ๊ฐ์
์์ ๋์ ํ์ธํ์์ ๋, Throughput(์ฒ๋ฆฌ๋)๊ณผ response time์ ๋ฐ๋น๋ก๊ด๊ณ์ ์๋ค๋ ๊ฒ์ ์ ์ ์์
gencon GC
- ์ต์
- -Xgcpolicy:gencon
- ์ค๋ช
- sun JVM๊ณผ ๋์ผํ ๊ตฌ์กฐ
- response time ๊ณผ throughput์ ๋ชจ๋ ํฅ์์ํฌ ์ ์์
- Heap์ Nursery Space ์ Tenured Space๋ก ๊ตฌ์ฑํ๋ฉฐ Nursery Space ๋ด์ ๋ค์ Allocate Space์ Survivor Space๋ก ๋๋ ์ง๋ค.
- Nursery Space์ gc๋ minor gc๋ก, Copy ๋ฐฉ์(Alive Object๋ฅผ Allocate Space์์ Survivor Space๋ก ๋ณต์ฌํ๋ ๊ฒ)
- Tenured space์ gc๋ Full gc๋ก Mark+Sweep+Commpaction์ด ์ํ๋จ
- ์ฅ์
- response time๊ณผ throughput์ด ๋์์ ํฅ์๋จ. ๋จ ํ๋์ด ํ์ํ ์ ์์
- ๋จ์
- CPU ์ค๋ฒํค๋๊ฐ ๋ฐ์
subpool GC
- ์ต์
- -Xgcpolicy: subpool
- ์ค๋ช
- Java Heap์ ์ฌ๋ฌ๊ฐ์ sub poll๋ก ๋๋์ด ๊ด๋ฆฌํ๋ ๊ธฐ๋ฒ์ ์ฌ์ฉ
- 16 CPU ์ด์์ ์๋ฒ ํ๊ฒฝ์์๋ง ์ฌ์ฉํ ๊ฒ์ ๊ถ์ฅ
- Sum JVM์ Parallel GC์ ๋์ผํ ๋ฐฉ์
๐ฟ Sun HotSpot JVM
Serial GC
- ์ต์
- -XX:+UseSerialGC
- ์ค๋ช
- Serial GC๋ ์ ์ ๋ฉ๋ชจ๋ฆฌ์ CPU ์ฝ์ด ๊ฐ์๊ฐ ์ ์ ๋ ์ ํฉํ ๋ฐฉ์
- ๋จ์ผ Thread๊ฐ GC๋ฅผ ์ํ
Parallel GC
- ์ต์
- -XX: +UseParallelGC
- ์ค๋ช
- Parallel GC๋ Serial GC์ ๊ธฐ๋ณธ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์
- Serial GC๋ ์ฒ๋ฆฌํ๋ Thread๊ฐ ํ๋์ธ ๊ฒ์ ๋นํด Parallel GC๋ GC๋ฅผ ์ฒ๋ฆฌํ๋ Thread๊ฐ ์ฌ๋ฌ๊ฐ์
- ๋ฐ๋ผ์ ๋น ๋ฆ ๊ทธ๋ฌ๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ถฉ๋ถํ๊ณ ์ฝ์ด ๊ฐ์๊ฐ ๋ง์ ๋ ์ฌ์ฉํด์ผ ํ๋ค.
Parallel Old GC
- ์ต์
- -XX: +UseParallelOldGC
- ์ค๋ช
- Parallel๊ณผ ๋น๊ตํ์ฌ Old ์์ญ์ GC ์๊ณ ๋ฆฌ์ฆ๋ง ๋ค๋ฅด๋ค.
- Mark-Summary-Compaction ๋จ๊ณ๋ฅผ ๊ฑฐ์นจ
- ์์ GC๋ฅผ ์ํํ ์์ญ์ ๋ํด์ ๋ณ๋๋ก ์ด์์๋ ๊ฐ์ฒด๋ฅผ ์๋ณํ๋ค๋ ์ ์์ Mark-Sweep-Compaction ์๊ณ ๋ฆฌ์ฆ์ Sweep ๋จ๊ณ์ ๋ค๋ฆ
CMS GC
- ์ต์
- -XX: UseConcMarkSweepGC
- ์ค๋ช
- initial Mark > Concurrent Mark > Remark > Concurrent Sweep ๋ฐฉ์์ผ๋ก ์งํ๋จ
- Concurrent Mark, Concurrent Sweep์ ๊ฒฝ์ฐ ๋ค๋ฅธ Thread๊ฐ ์คํ์ค์ธ ์ํ์์ ๋์์ ์งํ๋จ
- STW ์๊ฐ์ด ์งง์
- ๋ชจ๋ Application์ response time์ด ์ค์ํ ๋ ์ฌ์ฉํ๋ฉฐ, ๋์ ๋ฉ๋ชจ๋ฆฌ์ CPU ์ฌ์ฉ๋ ๋์
- ๊ธฐ๋ณธ์ ์ผ๋ก Compaction ์์ ์ด ์ ๊ณต๋์ง ์์
G1GC
- ์ต์
- -XX: +UseG1GC
- ์ค๋ช
- ๊ธฐ์กด JVM ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ์๋ ๋ค๋ฅด๊ฒ, Heap ์์ญ์ด 1MB ~ 32MB์ด๋ด์ ๊ณ ์ ๋ ํฌ๊ธฐ๋ก 2000์ฌ๊ฐ ์์ญ(Region)์ผ๋ก ๋ถํ ๋์ด ์์
- ๊ฐ Region์ ๊ธฐ์กด JVM heap ์์ญ์ด์๋ New, Survivor, Old, Perm ์์ญ์ ๊ฐ๊ฐ ๋ด๋นํ์ง๋ง ๋์ ์ผ๋ก ์ญํ ์ด ๋ณ๊ฒฝ๋ ์ ์์
- Region ์์ ์๋ ๊ฐ์ฒด๋ค์ด ๋ค๋ฅธ Region์ ์๋ ๊ฐ์ฒด๋ค์ ์ํด์ ์ฐธ์กฐ๋๋์ง๋ฅผ ๊ด๋ฆฌํ๊ณ Region ๋จ์๋ก Live Object๊ฐ ์๋์ง ์๋์ง๋ฅผ ํ๋จํ์ฌ ํด๋น Region์ด ๋ค์ฐจ๋ฉด ์ด์์๋ object๋ค์ ๋ค๋ฅธ Region์ผ๋ก copy ํ ํ, ํด๋น Region์ ๋น์
๐ฟ JVM Tunning Option
IBM JVM
- -Xms
- JVM ์์์ heap size
- -Xmx
- ์ต๋ heap size
- -Xmn, -Xmns, -Xmnx
- New ์์ญ์ ํฌ๊ธฐ(์ต์=์ต๋, ์ต์, ์ต๋)
- -Xmo, -Xmos, -Xmox
- Old ์์ญ์ ํฌ๊ธฐ(์ต์=์ต๋, ์ต์, ์ต๋)
- -Xdisableexplicitgc
- System.gc()์ ์ํ GC๋ฅผ ๋นํ์ฑํ
- -Xgcthreads
- Parallel GC ์์ ์ ํ Thread ๊ฐ์๋ฅผ ์ง์ .
- ๋ง์ผ ์ฌ๋ฌ Process๊ฐ CPU๋ฅผ ๋๋์ด ์ฐ๋ ํ๊ฒฝ์ด๋ผ๋ฉด ์ด ๊ฐ์ ๋ฎ์ถ ํ์๊ฐ ์๋ค.
- -Xloa
- LOA(Large Object Area)๋ฅผ ์ฌ์ฉํ ์ง์ ์ฌ๋ถ๋ฅผ ๊ฒฐ์
- Default๋ ํ์ฑํ ์ํ
- large object area๋ Heap Size์ 5%๋ฅผ ์ฐจ์งํ๋๋ฐ AP์ ํน์ฑ์ ๋น๊ต์ ํฐ ๊ฐ์ฒด(5MB)์ด์์ ์์ฑ์ด ๋น๋ฒํ ๊ฒฝ์ฐ์๋ ์ด ์์ญ์ ๋๋ ค์ค ํ์๊ฐ ์๋ค.
- -Xloainitial, -Xloamaximum, -Xloaminimum
- LOA์ ์ด๊ธฐ ํฌ๊ธฐ, ์ต๋ํฌ๊ธฐ, ์ต์ ํฌ๊ธฐ๋ฅผ ์ง์ ํ๋ค. 0~1 ์ฌ์ด์ ๊ฐ์ ์ง์ ํ๋ค.
- -Xmaxe, -Xmine
- Heap Expansion์ด ์ฆ๊ฐํ ์ต๋/์ต์ ํฌ๊ธฐ๋ฅผ ์ง์ ํ๋ค.
- -Xmaxf, -Xminf
- Heap ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ Free Memory์ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ ํ๋ค. Default ๊ฐ์ 60%, 30%์ด๋ค.
- Free Memory๊ฐ ์ ์ฒด Memory์ 60% ์ด์์ด ๋๋ฉด Heap Shrinkage๊ฐ ๋ฐ์ํ๊ณ
- 30% ์ดํ๋ฉด Heap Expansion์ด ๋ฐ์
- Heap ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ Free Memory์ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ ํ๋ค. Default ๊ฐ์ 60%, 30%์ด๋ค.
Sun HotSpot JVM
- -Xms
- JVM ์์ ์ Heap Size
- -Xms
- ์ต๋ Heap Size
- -XX: New Ratio
- New ์์ญ๊ณผ Old ์์ญ์ ๋น์จ
- -XX: New Size
- New ์์ญ์ ํฌ๊ธฐ
- -XX: MaxNewSize
- New generation์ heap size ์ต๋๊ฐ์ ์ค์
- -XX: SurvivorRatio
- Eden ์์ญ๊ณผ Survivor ์์ญ์ ๋น์จ
- -Xcompactgc
- ๋ชจ๋ garbage collections(system ๋๋ global)์ ๋ํ์ฌ ์์ถ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
- -XnoCompactgc
- ๋ชจ๋ garbage collections(system ๋๋ global)์ ๋ํ์ฌ ์์ถ์ ๋ถ๊ฐ๋ฅํ๊ฒ ํ๋ค.
- -Xcompactexplicitgc
- System.gc()๊ฐ ํธ์ถ ๋ ๋๋ง๋ค ๋ชจ๋ GC ์์คํ ์์ ์์ถ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
- -Xnocompactexplicitgc
- System.gc()๊ฐ ํธ์ถ์ ์ํ ์์ถ์ ๋ถ๊ฐ๋ฅํ๊ฒ ํจ.
- ์์ถ์ -Xcompactgc๋ฅผ ๋ช ์ํ๊ฑฐ๋ ๋๋ compaction triggers๋ฅผ ๋ง๋๋ฉด global garbage collections์์ ๋ฐ์
- -Xnoclassgc
- Class garbage collection์ ๋นํ์ฑํ ํ๋ค.
- JVM์ ์ํด์ ๋์ด์ ์ฌ์ฉ๋์ง ์๋ Java Class๋ค๊ณผ ์ฐ๊ด๋ storage์ garbage collection์ ๋๋ค.
- ์ฆ dynamic ํด๋์ค ๋ก๋ ํด์ ๋ฅผ ์ฌ์ฉ ๋ถ๊ฐ๋ฅํ๊ฒ ํ๋ค.