Image IO OOM 에러

이병우·2024년 12월 23일
0

back-end

목록 보기
4/4

ImageIO 동작 방식

  1. 이미지 파일을 바이트 스트림으로 읽음.
  2. 이미지 데이터를 디코딩하여 픽셀 데이터로 변환. > 픽셀 단위
  3. 각 픽셀은 ARGB (Alpha, Red, Green, Blue) 값으로 변환되어 저장 된 후 JVM의 Heap 메모리에 BufferedImage 객체로 적재.

에러 발생 경위

기존 운영에 OCR 서비스를 제공하는 서버가 있는데 해당 서비스에서 생성한 이미지를 읽어 이미지인지 확인하는 로직이 있었다.(이미지가 아니면 null을 반환)
그런데 해당 이미지가 8k 고해상도 파일이라 큰 용량의 이미지가 힙메모리에 적재되어 OOM이 발생.

예상 조치 방법

  1. 용량에 대한 예외 로직을 추가하고(OOM 방지)
  2. 파일 확장자, 이미지 파일 매직넘버 확인 등 단계 별 체크 로직을 추가하면 좋을거 같다.
  3. 서버 용량까지 생각하여 애초에 파일을 생성할 때 압축하여 저장하는것도 방법인거 같다.
profile
맛있게 개발하는게 목표!

0개의 댓글