일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- Tomcat
- SID
- servicename
- 스레드
- wsdl
- MySQL
- HTML
- Linux
- 티스토리챌린지
- ibatis
- letterspacing
- httpservletreqeust
- oracle
- 안드로이드 스튜디오
- API
- 오블완
- Database
- JDBC
- service name
- 스레드 덤프
- cmd
- Docker
- 영상편집
- java
- MariaDB
- http
- 컨트롤러
- 키보드
- 프로세스
- 톰캣
- Today
- Total
블로그 이름
HTTP Status 500 - Handler processing failed; nested exception is java.lang.OutOfMemoryError: Java heap space 본문
HTTP Status 500 - Handler processing failed; nested exception is java.lang.OutOfMemoryError: Java heap space
Hide 2024. 6. 26. 20:25HTTP 상태 코드 500과 함께 java.lang.OutOfMemoryError: Java heap space 오류가 발생하는 것은 Java 애플리케이션이 할당된 힙 메모리 이상을 사용하려고 할 때 발생합니다. 이는 일반적으로 애플리케이션이 큰 파일을 업로드하거나 처리할 때 발생할 수 있습니다. 이 문제를 해결하기 위해 다음 단계를 따를 수 있습니다:
1. 힙 메모리 크기 증가
Java 힙 메모리 크기를 늘려야 합니다. Tomcat을 사용하는 경우, CATALINA_OPTS 환경 변수를 사용하여 힙 메모리 크기를 설정할 수 있습니다.
- setenv.sh (Unix/Linux)
export CATALINA_OPTS="-Xms1024m -Xmx4096m"
- setenv.bat (Windows)
set "CATALINA_OPTS=-Xms1024m -Xmx4096m"
여기서 -Xms는 초기 힙 메모리 크기, -Xmx는 최대 힙 메모리 크기를 의미합니다. 예를 들어, 최대 힙 메모리 크기를 4GB로 설정하려면 -Xmx4096m으로 설정합니다.
Tomcat이 설치된 디렉토리로 이동합니다. 예를 들어, Tomcat이 C:\Tomcat에 설치되어 있다면:
setenv.bat 파일이 없으면 새로 만듭니다. 이미 존재하면 편집합니다.
- 메모장을 열어 setenv.bat 파일 생성:
-
notepad setenv.bat
- 다음 내용을 추가:여기서 -Xms1024m은 초기 힙 메모리 크기를 1GB로 설정하고, -Xmx4096m은 최대 힙 메모리 크기를 4GB로 설정합니다. 필요에 따라 이 값을 조정하세요.
-
set "CATALINA_OPTS=-Xms1024m -Xmx4096m"
2. Spring Boot 설정 (Spring Boot 사용하는 경우)
Spring Boot를 사용하는 경우 application.properties 또는 application.yml 파일에 힙 메모리 크기를 설정할 수 있습니다.
- application.properties
server.tomcat.max-http-post-size=4294967296 spring.servlet.multipart.max-file-size=4GB spring.servlet.multipart.max-request-size=4GB
3. 서버 및 애플리케이션 설정
서버 설정을 확인하여 파일 업로드 크기 제한을 적절하게 설정했는지 확인합니다. Tomcat을 사용하는 경우 server.xml에서 maxPostSize를 설정할 수 있습니다.
- server.xml
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxPostSize="4294967296" />
4. 파일 업로드 처리 코드 최적화
파일 업로드를 처리하는 Java 코드에서 파일을 한꺼번에 메모리에 로드하는 대신 스트리밍 방식으로 처리하는 것을 고려해 보세요. 예를 들어, Apache Commons FileUpload 라이브러리나 Spring의 MultipartResolver를 사용하여 스트리밍 방식으로 파일을 처리할 수 있습니다.
5. 시스템 리소스 확인
서버의 메모리 리소스를 확인하여 실제로 메모리를 확장할 수 있는지 확인합니다. 물리적인 메모리가 부족한 경우, 서버의 메모리를 추가해야 할 수도 있습니다.
6. GC (Garbage Collection) 설정 최적화
Garbage Collection 설정을 최적화하여 힙 메모리 사용을 효율적으로 할 수 있도록 설정합니다. 예를 들어, G1 GC를 사용하는 것을 고려해 보세요.
- setenv.sh (Unix/Linux)
export CATALINA_OPTS="-Xms1024m -Xmx4096m -XX:+UseG1GC"
7. 로그 확인
서버 로그를 주기적으로 확인하여 메모리 누수와 같은 문제가 있는지 확인합니다. 메모리 누수가 있다면 이를 해결해야 합니다.
'개발 > 오류' 카테고리의 다른 글
javax.management.ReflectionException 오류 (0) | 2024.08.09 |
---|---|
ORA-01017:사용자명/비밀번호가 부적합, 로그온할 수 없습니다. (0) | 2024.08.06 |
JDBC 연결 오류 web.config (0) | 2024.05.10 |
DBeaber 접속 안될때 (0) | 2024.04.22 |
NullPointerException 오류 (0) | 2024.03.07 |