โ ์ฐ๋ฆฌ ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ ์ํ๊น์ด ํ ์ํ๋ฅผ ๋ ผํ๋ค๋ฉด, ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ฌ์ ํ ํ๋ง์ ์ด ๋ถ๋ช ํ๋ฉฐ, ์์ง ๊ณตํ์ด๋ผ๊ณ ๋ถ๋ฅผ ์ ์๋ค. โ
- Bill Clinton
๋ฏธ๊ตญ์ ์ 42๋ ๋ํต๋ น

์ธํ ๋ฆฌ์ ์ด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ด์ฆ ๋ณ๊ฒฝํ๊ธฐ
์๋ฐ ํ๋ก๊ทธ๋จ ์ฑ๋ฅ ํ ์คํธ๋ฅผ ํ ๋๋ ์๋๋ฉด ์คํ์ ์ฌ๋ฆฌ๊ณ ์ถ์๋ ๊ฐ๋ ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ณ๊ฒฝํด์ผ ํ ๊ฒฝ์ฐ๊ฐ ์๊ธด๋ค.
์ธํ ๋ฆฌ์ ์ด์์๋ ์ ๋ง ๊ฐ๋จํ๊ฒ ๋ฉ๋ชจ๋ฆฌ ์ค์ ์ ํ ์ ์์ผ๋ฉฐ, ์ด์ธ์๋ JVM ์ต์ ๋ค์ ํ๊บผ๋ฒ์ ์ฒ๋ฆฌํด์ฃผ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
์ธํ ๋ฆฌ์ ์ด ์ ์ญ ๋ฉ๋ชจ๋ฆฌ ์ค์
1. Help > Change Memory Settings ๋ฉ๋ด ํด๋ฆญ

2. Maximum Heap Size์ ์ฌ์ด์ฆ ๊ฐ์ ๋ณ๊ฒฝ
- ์ด๋ ๋ฐ๋์ Save and Restart๋ฅผ ํด์ฃผ์ด์ผ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ฉ์ด ๋๋ค.

3. ์ธํ ๋ฆฌ์ ์ด ํ๋จ ํ์์ค์ ์ฐํด๋ฆญ ํ์ฌ Memory Indecator ์ฒดํฌํ๋ค.

4. ๊ทธ๋ฌ๋ฉด ํ๋จ ํ์์ค ๋งจ ์ฐ์ธก์ ์ฌ์ฉ ๋ฉ๋ชจ๋ฆฌ์์ด ํ์๋๋ค.

ํ๋ก์ ํธ ๊ฐ๋ณ ๋ฉ๋ชจ๋ฆฌ ์ค์
๋ง์ผ ์ธํ ๋ฆฌ์ ์ด ์ ์ญ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ ํ๋ก์ ํธ๋ง๋ค ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ค๋ฅด๊ฒ ์ค์ ํ๊ณ ์ถ๋ค๋ฉด, ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํด์ฃผ๋ฉด ๋๋ค.
1. Run/Debug Configurations ์ ํ

2. ์ดํ๋ฆฌ์ผ์ด์ ์ ์ ํํ๊ณ Modify options๋ฅผ ํด๋ฆญ

3. Add VM options ๋ฉ๋ด๋ฅผ ํ์ฑํ

4. ํ๋ก์ ํธ์ ์ ์ฉํ ํ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ด์ฆ ์ค์
- ํ์ธ์ ๋๋ฅด๊ณ ํ๋ก์ ํธ๋ฅผ runํ๋ฉด ์ค์ ๋ ํ ๋ฉ๋ชจ๋ฆฌ๋ก ์๋ฐ ํ๋ก๊ทธ๋จ์ ์คํํ๊ฒ ๋๋ค.

ํฐ๋ฏธ๋์ ์ด์ฉํ ๋ฉ๋ชจ๋ฆฌ ์ค์
๋ง์ฝ ์ธํ ๋ฆฌ์ ์ด IDE ์ค์ ์ด ๋ณต์กํ๋ฉด ํฐ๋ฏธ๋ ์ปค๋งจ๋๋ก ์ต์ ์ ์ง์ ํ์ฌ ์ปดํ์ผ๋ ๋ฐ์ดํธ ํ์ผ์ ์คํํด๋ ๋๋ค.
> java -classpath ํด๋์ค_ํ์ผ์ด_๋ค์ด์๋_์ ๋๊ฒฝ๋ก -Xms200m -Xmx200m Main

์ธํ ๋ฆฌ์ ์ด JVM ์ต์ ํธ์ง
ํ ๋ฉ๋ชจ๋ฆฌ ๋ฟ๋ง ์๋๋ผ ์ธํ ๋ฆฌ์ ์ด ์๋ฐ ํ๋ก์ ํธ์ ์ ์ฉํ ์ ๋ฐ์ ์ธ JVM ์ต์ ๋ค์ ๊ด๋ฆฌํ๊ณ ์ถ๊ฐํ๊ธฐ ์ํด์๋ idea64.exe.vmoptions ํ์ผ์ ์ค์ ํด์ฃผ๋ฉด ๋๋ค.
idea64.exe.vmoptions ํ์ผ์ ์ธํ ๋ฆฌ์ ์ด ์ค์น ํด๋์ bin ํด๋ ์์ ์์นํด ์์ผ๋ฉฐ, ์ธํ ๋ฆฌ์ ์ด์์๋ ๋ค์ ๋ฉ๋ด๋ฅผ ๋๋ฅด๋ฉด ์๋์ผ๋ก ์ด์ด์ค๋ค.

-Xms2g # ์ด๊ธฐ Heap ์ฌ์ด์ฆ
-Xmx2g # ์ต๋ Heap ์ฌ์ด์ฆ
-XX:ReservedCodeCacheSize=256m # ์ฝ๋ ์บ์ฌ ์ฌ์ด์ฆ Heap ๋ฉ๋ชจ๋ฆฌ ์ฌ์ด์ฆ์ ๊ณต์ ํ์ง ์๋๋ค.
-XX:+UseG1GC # G1GC ๊ฐ๋น์ง ์ปฌ๋์
์ ์ฌ์ฉํ๋ค.
-XX:MetaspaceSize=768m # Java8 ์ด์์ Permanent ์์ญ ์ฌ์ด์ฆ
-XX:MaxMetaspaceSize=768m # Java8 ์ด์์ ์ต๋ Permanent ์์ญ ์ฌ์ด์ฆ
-XX:+UseCompressedOops # 64๋นํธ JVM์์ ์์ถ ์ฐธ์กฐ๋ฅผ ์ฌ์ฉ ๊ฐ๋ฅ
-XX:MaxGCPauseMillis=200 # GC๋ก ์ธํ ์ต๋ ์ค๋จ์๊ฐ์ ๋ช
์
-XX:ParallelGCThreads=4 # ๋ค์ค GC๋ฅผ ์ํด ์ฌ์ฉ๋์ด์ง GC ์ค๋ ๋์ ์
-XX:ConcGCThreads=1 # ๋์์ CMS ๋จ๊ณ๊ฐ ๋์ํ ๋์ ์ฌ์ฉํ ์ฐ๋ ๋ ๊ฐ์๋ฅผ ์ ์
-XX:+HeapDumpOnOutOfMemoryError # OutOfMemoryError ๋ฐ์ ์ ์๋์ผ๋ก heap dump๋ฅผ ์์ฑ
-XX:ErrorFile=$USER_HOME/java_error_in_idea_%p.log # ์๋ฌํ์ผ ์์ฑ ์์น
-XX:HeapDumpPath=$USER_HOME/java_error_in_idea.hprof # HeapDump ํ์ผ ์์ฑ ์์น
-ea # assertions์ ์ฌ์ฉํ๋ค.
-server # ์๋ฐ HotSpot Server VM
-Dsun.io.useCanonCaches=false # Java์ ์ ๊ทํ ์บ์ ์ฌ์ฉ์ฌ๋ถ
-Djava.net.preferIPv4Stack=true # IP4๋ฅผ ์ฌ์ฉ์ฌ๋ถ
-Dfile.encoding=UTF-8 # Java ์์คํ์ผ ์ธ์ฝ๋ฉ
์ด ๊ธ์ด ์ข์ผ์ จ๋ค๋ฉด ๊ตฌ๋ & ์ข์์
์ฌ๋ฌ๋ถ์ ๊ตฌ๋
๊ณผ ์ข์์๋
์ ์์๊ฒ ํฐ ํ์ด ๋ฉ๋๋ค.