개발/etc

[Tomcat] PermGen space 에러 해결방법

Dane.Kim 2022. 11. 7.

api를 만들어 이클립스로 돌리던 도중, 데이터가 리턴되지 않아서 로그를 보니 

 

PermGen space 에러가 발생했다.

 

이 에러는 Tomcat에서 가용할 수 있는 최대 메모리를 필요 메모리가 넘겨 발생하는 에러로,

 

대표적으로 무분별한 메모리 사용, 핫디플로이 설정 문제, 메모리 설정 문제 등을 이유로 본다.

 

해결 방법으로,

 

1. Tomcat 메모리 설정 변경

 

Tomcat/bin/catalina.bat 파일에서 setlocal 삭제

set "CATALINA_OPTS=-Xms1024M -Xmx1024M -XX:PermSize=256M -XX:MaxPermSize=512M"

설정 추가

 

* Option 정보

Xms - Min Memory

Xmx - Max Memory

XX:PermSize - Min Perm Memory

XX:MaxPermSize - Max Perm Memory

 

현재 가장 중요하게 설정해주어야하는 XX:MaxPermSize는  최대 Permanent Generation size를 의미하며, Out of Memory 오류 발생 시 size 조절을 해주면 되는 영역이다.

 

2. JAVA 8 이상 업그레이드

 

JAVA8에서는 JAVA7까지 존재하던 permanent 영역을 제거하였기 때문에, 

java.lang.OutOfMemoryError : PermGen space 에러가 발생할 일이 없다.

 

3. 이클립스 VM arguments 설정

 

Tomcat 대신 이클립스 설정을 변경해주어도 된다.

Window > Preferences > Java > Installed JREs 클릭

Edit을 눌러 Default VM arguments에 

-XX:MaxPermSize=512m 

을 입력해준다.

 

 

 

 

댓글