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
을 입력해준다.
'개발 > etc' 카테고리의 다른 글
[JBoss] 배포 옵션 정리 (마커, CLI) (0) | 2022.11.10 |
---|---|
[JBoss] you have not yet added any users to be able to access the admin console 에러 해결법 (0) | 2022.11.09 |
RESTful(REpresentational State Transfer) API란? (0) | 2022.08.22 |
개발바닥 창의력 퀴즈 풀어보기 (0) | 2022.07.25 |
[JSP] JSP와 HTML의 동작 차이 (0) | 2022.03.28 |
댓글