개발을 한후 서버에 올리고 톰캣을 실행하다 보면 발생할수 있는 볼수 있는 에러이다.
PermGen space 는 Class, Method 등이 저장되는 영역으로 JVM에 의해 사용된다. 즉, OutOfMemory 에러는 설정된 메모리가 부족하여 발생하는 에러이다.
간단히 톰캣의 메모리를 설정해주면 해결된다.
이를 해결하기 위해 톰캣의 메모리를 늘려보자.
OS는 window server2012, 톰캣은 7.0(무설치), JDK는 1.7 기준이다.
우선 자바가 설치된 폴더의 bin 폴더로 이동해 Jconsole.exe 파일을 실행한다.
그럼 위와 같은 Monitoring 창이 뜨고 현재 설정된 메모리를 확인할 수 있다.
톰캣의 bin 폴더로 이동하자.
catalina.bat 파일을 편집으로 열어 setlocal 을 지우고
set "CATALINA_OPTS=-Xms512M -Xmx1024M -XX:PermSize=256M -XX:MaxPermSize=512M"
을 추가해준다.
출처: https://aljjabaegi.tistory.com/218 [알짜배기 프로그래머]
<추가>
JAVA8 이상의 버전에서는, Permanent Heap 영역이 제거되었고, 대신에 Metaspace 영역이 추가되었다.
- Permanent Heap영역은 JVM에 의해 크기가 강제되던 영역인 반면에, Metaspace는 Native memory 영역으로, OS가 자동으로 크기를 조절한다
- 또한 옵션으로도 MetaSpace의 크기를 줄일수 있으며, 이로 인해 OOM 에러를 보기가 더 힘들어졌다.
'프로그래밍 언어 > Java' 카테고리의 다른 글
Stream vs List (0) | 2022.06.12 |
---|---|
제네릭(Generic) (0) | 2022.06.08 |
JVM 메모리 구조 (0) | 2022.05.02 |
싱클톤 패턴(Singleton Pattern) (0) | 2022.03.17 |
static 변수와 함수 (0) | 2022.03.17 |