Handler dispatch failed: java.lang.OutOfMemoryError: Java heap space
🌸 상황 🌸
Spring Boot 에서 CSV 파일을 다운받아 읽는 코드를 작성했다.
로컬에서는 잘 돌아갔는데, aws ec2 에서는 heap memory 오류가 났다.
🧶 시도 🧶
- 처음에는 CSV 파일을 다운받을 때 생긴 오류인 줄 알았다. 그래서 heap memory 크기를 2GB로 늘려주는 설정 파일을 추가해서 배포해주었는데 잘 되지 않았다. t2.micro 를 사용하고 있었는데 1GB 가 최대 한도이기 때문에 늘리지 못한다는 글도 보았다.
# .ebextensions 파일의 jvm.config
option_settings:
aws:elasticbeanstalk:application:environment:
JAVA_OPTS: "-Xmx2048m"
📎 해결 📎
- 문득, 이 에러가 CSV 파일을 다운받을 때 생기는 오류인지, CSV 파일을 읽으면서 발생하는 오류인지 의문이 들었다.
- 원래 한 번에 CSV 파일을 읽어들이는 코드를 사용했었는데 ( List<String[]> records = csvReader.readAll() )
- 한 줄씩 읽어들이는 코드로 변경했다.
String[] record;
while ((record = csvReader.readNext()) != null) {
...
}