이클립스 java.lang.OutOfMemoryError: Java heap space :: 개발/일상_Mr.lee

이클립스 java.lang.OutOfMemoryError: Java heap space

Posted by Mr.mandu.
2018. 5. 23. 19:28 개발/was

프로젝트를 진행하면서 에러가 발생하였습니다.

아마 유명한 에러일듯 합니다.


java.lang.OutOfMemoryError: Java heap space


at java.util.Arrays.copyOfRange(Arrays.java:3664)

at java.lang.String.<init>(String.java:207)

at java.nio.HeapCharBuffer.toString(HeapCharBuffer.java:567)

at java.nio.CharBuffer.toString(CharBuffer.java:1241)

at java.util.regex.Matcher.toMatchResult(Matcher.java:250)

at java.util.Scanner.match(Scanner.java:1294)

at java.util.Scanner.hasNextLine(Scanner.java:1502)


블라블라블라


비교적 유명한 에러 입니다.

그럼에도 불구하고 포스팅을 하는 이유는 

처리방법이 애매모호하기 때문입니다.


인터넷 검색하여 찾은 방법들도 각각 다르고....

jvm, 이클립스, 톰캣 어디서 이 에러가 발생한 것인가!

결국 찾아내서 에러를 고쳤습니다.


했던 방법을 소개해드리겠습니다.

제가 찾은 방법은 3가지였고, 모두 해보았습니다.

결국 3번째 방법으로 문제를 해결하였습니다.

3번째 방법으로 해결이 안될시, 1,2번째 방법을 활용해보세요.


1. 이클립스 eclipse.ini 수정

2. 톰캣의 catalina.bat 수정

3. 이클립스 상에서의 톰캣 aguments 수정하였습니다.


저는 3번째 방법으로 에러를 해결하였습니다.

3번째 방법을 소개하고 1,2번째의 방법도 설명드리겠습니다.




이클립스상의 톰캣을 더블클릭하여 설정 화면을 띄웁니다.

그리고 Open launch configuration 을 선택합니다.



Arguments 설정 부분에 

-XX:MaxPermSize=4048m -Xms516m -Xmx6048m

을 추가 하였습니다.

메모리 수치는 본인의 컴퓨터에 맞게 입력하시면 됩니다.

(Java Heap space와  Permenant Generation 대상 데이터를 두기 위한 PermGen space 설정)





그리고 첫번째 방법으로 했던 eclipse.ini 파일 수정법입니다.


파일 아래 부분에 

-Xms4096m

-Xmx6096m

-XX:MaxPermSize=6048m

를 추가 하였습니다.



그리고 두번째는 톰캣의 catalina.bat 수정 입니다.


setlocal을 삭제한뒤

set "CATALINA_OPTS=-Xms512M -Xmx6048M -XX:PermSize=256M -XX:MaxPermSize=6048M"

를 입력하였습니다.


앞서 말씀드렸듯이 저는 3번째 방법으로 문제를 해결하였습니다.

그럼 즐거운 하루 보내세요.