Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- HTML
- Docker
- java
- Database
- 톰캣
- MariaDB
- 컨트롤러
- 티스토리챌린지
- 영상편집
- JDBC
- MySQL
- ibatis
- 스레드 덤프
- 안드로이드 스튜디오
- letterspacing
- Tomcat
- 삼성증권
- http
- integer
- 오블완
- wsdl
- oracle
- 프로세스
- equals
- 키보드
- 스레드
- cmd
- API
- START WITH
- Linux
Archives
- Today
- Total
블로그 이름
[ERROR] Caused by: java.lang.OutOfMemoryError: Java heap space 본문
JAVA의 heap 메모리 부족 문제 발생
힙 메모리에 객체 저장 시 메모리 부족하여 발생하는 에러로 JVM이 더이상 객체를 할당할 수 없어 OutOfMemoryError를 던져 발생.
주요 원인은 아래와 같다고 한다.
1. 처리해야할 데이터의 양이 많을때 (대용량, 컬렉션 대용량 List,Map 등)
2. 메모리 누수, 객체 참조 유지로 가비지 컬렉션 처리 불가
3. JVM 힙 메모리 설정값이 적을때
-XX:+HeapDumpOnOutOfMemoryError JVM 옵션을 설정하면 에러 발생 시 힙 덤프를 남겨 문제 분석이 가능하다 하는데 나는 이슈 재발이 안되어 로그만 보고 원인을 분석해야 하는 상황이었고
대충 로그 보고 어디:쯤에서 끊겼는지 확인해보니
특정 기능 데이터 조회가 안되는듯함
한 테이블 전체 조회 SELECT * FROM TESTTABLE 이었는데
DB 데이터 확인해보니 데이터 수량으로 객체 메모리 확인 시 DB 데이터 양이 대략 6G정도
JVM 힙 메모리 설정은 4GB로 적재할 수 없는 상황
불필요한 객체를 생성하지 않도록 전체 테이블을 조회하는 것이 아닌 키 값을 사용하여 조회 대상으로만 단건 조회하도록 변경 (이러면 DB 연결을 많이 하긴 함)
대용량 데이터를 한번에 List 에 담으려다가 발생하여 데이터를 나눠 처리하도록 개선 후 문제없이 동작을 확인