OutOfMemoryError
OutOfMemoryError
๋ ๋ฉ๋ชจ๋ฆฌ ๋์ ์ํฉ์ด ๋ฐ์ํ์ ๋ ์ผ์ด๋๋ค. ์๋ฐ๋ ๊ฐ์ฒด๋ฅผ ํ๊ณต๊ฐ์ ์์ฑํ๊ณ , ์ด ์์ฑ์์น์ ๋ํ ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํ๋ค. ์ด ์ค๋ฅ๋ ํ ๊ณต๊ฐ์ ๊ฐ์ฒด๋ฅผ ํ ๋นํ๊ธฐ ์ํ ๊ณต๊ฐ์ด ๋ถ์กฑํ ๊ฒฝ์ฐ ๋ฐ์ํ๋๋ฐ OutOfMemoryError
์ ์ข
๋ฅ ๋ฐ ์์ธ์ ๋ํด์ ์ดํด๋ณผ ๊ฒ์ด๋ค.
java.lang.OutOfMemoryError: Java heap space
์์ธ
์๋ฐ ํ ๊ณต๊ฐ์ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ ๊ฒฝ์ฐ ๋ฐ์ํ๋ค. ์ด ์ค๋ฅ๊ฐ ๋ฐ๋์ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์๋ฏธํ๋ ๊ฒ์ ์๋๋ค. ์ง์ ํ ํ ํฌ๊ธฐ๊ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ์ถฉ๋ถํ์ง ์์ ๊ฒฝ์ฐ์๋ ๋ฐ์ํ๋ค. ํน์ finalize
๋ฅผ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์
์์ ๋ฐ์ํ๊ธฐ๋ ํ๋ค. ํด๋์ค์ finalize
๋ฉ์๋๊ฐ ์๋ ๊ฒฝ์ฐ ํด๋น ๊ฐ์ฒด์ ๋ํ GC ๊ณต๊ฐ์ ํ๋ณดํ์ง ๋ชปํ๋ค. finalizer
ํ๋ฅผ ์ฒ๋ฆฌํ๋ ์๋๋ณด๋ค ๋น ๋ฅธ ์๋๋ก ์์ด๋ฉด์ ํ ๊ณต๊ฐ์ด ๊ฐ๋์ฐจ ๋ฐ์ํ ์ ์๋ค.
ํด๊ฒฐ
finalization
๋ณด๋ฅ ์ํ์ ๊ฐ์ฒด๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ คํด์ผํ๋ค.
java.lang.OutOfMemoryError: GC Overhead limit exceeded
์์ธ
์ด ์์ธ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ํ ๋นํ๋๋ฐ ํ์ํ ๊ณต๊ฐ์ด ํ์ ์๋ ๊ฒฝ์ฐ ๋ฐ์ํ๋ค.
ํด๊ฒฐ
ํ ๊ณต๊ฐ์ ๋๋ฆฐ๋ค.
-XX:-UseGCOverheadLimit
์ ํ์ฌํญ์ ์ถ๊ฐํ์ฌjava.lang.OutOfMemoryError
๊ฐ ๋ฐ์ํ๋ ์ด๊ณผ ์ค๋ฒํค๋ GC ์ ํ ๋ช ๋ น์ ํด์ ํ ์ ์๋ค.
java.lang.OutOfMemoryError: Requested array size exceeds VM limit
์์ธ
์ ํ๋ฆฌ์ผ์ด์ ์ด ํ ๊ณต๊ฐ๋ณด๋ค ํฐ ๋ฐฐ์ด์ ํ ๋น ์๋ํ๋ ๊ฒฝ์ฐ ๋ฐ์ํ๋ค. ์๋ฅผ๋ค์ด 512MBํฌ๊ธฐ์ ๋ฐฐ์ด์ ํ ๋นํ๋ คํ์ง๋ง, ํ์ ์ต๋ํฌ๊ธฐ๊ฐ 256MB์ธ ๊ฒฝ์ฐ ์์ฒญ ๋ฐฐ์ดํฌ๊ธฐ๊ฐ VM์ ํ์ ์ด๊ณผํ๋ฉด์ ํด๋น ์ค๋ฅ๋ฅผ ๋ฐ์์ํจ๋ค.
ํ ์ฌ์ด์ฆ๊ฐ ๋๋ฌด ์์ ๊ฒฝ์ฐ
๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ ๊ฒฝ์ฐ
java.lang.OutOfMemoryError: Metaspace
์์ธ
์๋ฐ ํด๋์ค ๋ฉํ๋ฐ์ดํฐ๋ ์์ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋๋ค. ํด๋์ค ๋ฉํ๋ฐ์ดํฐ๊ฐ ํ ๋น๋ ๋ฉํ๊ณต๊ฐ์ด ๋ชจ๋ ์๋ฉธ๋๋ฉด ํด๋น ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
ํด๊ฒฐ
MaxMetaSpaceSize
๊ฐ์ ๋๋ ค ํด๊ฒฐํ ์ ์๋ค. MaxMetaSpaceSize
๋ ์๋ฐ ํ๊ณผ ๋์ผํ ์ฃผ์ ๊ณต๊ฐ์ ํ ๋น๋๋ฉฐ, ์๋ฐ ํ์ ํฌ๊ธฐ๋ฅผ ์ค์ด๋ฉด ๋ ๋ง์ ๊ณต๊ฐ์ ํ๋ณดํ ์ ์๋ค. ์ฆ, ์๋ฐ ํ ๊ณต๊ฐ์ ์ฌ์ ๊ฐ ์๋ ๊ฒฝ์ฐ์ ๊ณ ๋ คํด๋ณผ ์ ์๋ค.
ํ๋์ ํ๋ก์ธ์ค ๋น ์ฌ์ฉ๊ฐ๋ฅ ๋ฉ๋ชจ๋ฆฌ๋ 4G
์ด ์ต๋ ๋ฉ๋ชจ๋ฆฌ ์์์ heap์์ญ, perm์์ญ, native heap์์ญ, stack์์ญ์ ์ค์
user๊ฐ ์ค์ ํ ์ ์๋ ์ต์ ์ heap์์ญ๊ณผ perm์์ญ
๊ทธ ์ด์ธ ์์ญ์ 3๋ฒ์์ ์ค์ ํ ํฌ๊ธฐ๋ฅผ ์ ์ธํ ๊ณต๊ฐ์ ์ ์ ํ๊ฒ ์ค์ ๋
์ฆ, heap์์ญ๊ณผ perm์์ญ์ ๊ณผํ๊ฒ ์ค์ ํ๋ฉด, native์์ญ๊ณผ stack์์ญ์ด ์ ์ ๊ณต๊ฐ์ผ๋ก ์ค์ ๋์ด ์ด ๋ ์์ญ์ ๊ณต๊ฐ๋ถ์กฑ์๋ฌ๊ฐ ๋ฐ์ ํ ์๋ ์๋ค.
java.lang.OutOfMemoryError: request size bytes for reason. Out of swap space?
์์ธ
์๋ฐ HotSpot VM ์ฝ๋๊ฐ Native Heap์ด ๊ณ ๊ฐ๋์ ํ ๋นํ ์ ์๋ ๊ฒฝ์ฐ์ ๋ฐ์ํ๋ค. ์ด ์ค๋ฅ์ ๊ฒฝ์ฐ ์คํจํ ์์ฒญ์ ํฌ๊ธฐ(byte)์ ๋ฉ๋ชจ๋ฆฌ ์์ฒญ์ ์ด์ ๋ฅผ ๋ํ๋ด๋ฉฐ, ์ฃผ๋ก ์์ค ๋ชจ๋์ ์ด๋ฆ์ ์ถ๋ ฅํ๋ค.
ํด๊ฒฐ
Native Heap ๊ณ ๊ฐ์ ๊ฒฝ์ฐ๋ ํ ๋ฉ๋ชจ๋ฆฌ ๋ก๊ทธ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ๋งต ์ ๋ณด๋ฅผ ๋ถ์ํ๋ ๊ฒ์ด ์ ์ฉํ๋ฉฐ, ์ด์์ฒด์ ์ ๋ฌธ์ ํด๊ฒฐ ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํด ๋ฌธ์ ๋ฅผ ์ง๋จํ ์ ์๋ค.
java.lang.OutOfMemoryError: Compressed class space
์์ธ
64bit ํ๋ซํผ์์ ํด๋์ค ๋ฉํ๋ฐ์ดํฐ ํฌ์ธํฐ๋ 32bit ์คํ์
์ผ๋ก ํํ๋๋๋ฐ, ์ด ๋ฐฉ์์ UseCompressedClassPointers
๋ก ์ ์ดํ ์ ์๋ค. UseCompressedClassPointers
๊ฐ ํ์ฑํ๋๋ฉด ํด๋์ค ๋ฉํ๋ฐ์ดํฐ๊ฐ ์ฌ์ฉํ ์ ์๋ ๊ณต๊ฐ์ ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋๊ณ , CompressedClassSpaceSize
๊ณต๊ฐ์ ์ด๊ณผํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
ํด๊ฒฐ
CompressedClassSpaceSize
์ ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ๊ฑฐ๋ UseCompressedClassPointers
๋ฅผ ๋นํ์ฑํ ์์ผ ํด๊ฒฐํ ์ ์๋ค.
์ค๋ฅ ๋ฐ์์์ผ๋ณด๊ธฐ
-XX:CompressedClassSpaceSize=4g
์ค์ ํ ํ ์คํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ฉ์ธ์ง๋ฅผ ๋ณผ ์ ์๋ค.
java.lang.OutOfMemoryError: reason stack_trace_with_native_method
์์ธ
๋ค์ดํฐ๋ธ ๋ฉ์๋์ ํ ๋น ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ์ด๋ค. ์ด ์ค๋ฅ ๋ฉ์ธ์ง๋ JVM์ฝ๋๊ฐ ์๋ JNI(Java Native Interface) ๋๋ ์์๋ฉ์๋์์ ํ ๋น ์คํจ๊ฐ ๊ฐ์ง๋ ๊ฒ์ด๋ค.
ํด๊ฒฐ
์ด์์ฒด์ ๋ถ์ ๋๊ตฌ๋ฅผ ์ด์ฉํด ๋ฌธ์ ์ ์ ์ง๋จํ๊ณ ํ์ ํด์ผํ๋ค.
์ฐธ๊ณ
Last updated