호테의 노트에 오신 것을 환영합니다 🙌

Tableau와 Salesforce, Python과 SQL 등 데이터의 전반적인 것들을 다루는 기술 블로그입니다.

SQL

DBeaver에서 자바 힙 메모리 늘리기: OutOfMemoryError 디버깅

Hote's Note 2025. 12. 22. 17:31

대용량 쿼리 결과를 그리드로 열거나, ERD/메타데이터를 대량 로딩하거나, 데이터 내보내기(Export)를 수행할 때 DBeaver가 멈추거나 아래와 같은 오류가 발생하는 경우가 있습니다.

  • java.lang.OutOfMemoryError: Java heap space

이런 경우 대부분은 DBeaver 자체가 JVM 위에서 동작하기 때문에, DBeaver 프로세스에 할당된 Java Heap(-Xmx) 이 부족해서 생깁니다.

1) 먼저 확인: 힙을 늘리기 전에 정말 필요한지 점검

힙을 늘리기 전에 아래 3가지를 먼저 점검하면, 힙을 안 늘려도 문제가 사라지는 경우가 많습니다.

(1) 결과 셋(Row) 너무 많이 가져오고 있지 않나요?

  • SELECT * FROM big_table; 같은 쿼리로 수십만~수백만 행을 그리드로 당겨오면 DBeaver가 메모리를 크게 씁니다.
  • 우선은 아래처럼 제한을 둡니다.
SELECT *
FROM big_table
LIMIT 10000;

 

(2) Result Set Fetch Size / Max Rows 제한

DBeaver는 “얼마나 많이 가져올지” 설정이 있습니다.

  • Preferences → Database → Result Sets
    • Maximum number of rows (권장: 10,000~50,000)
    • Fetch size (DB 성격 따라 1,000~10,000)

대용량 결과를 UI로 보기보다, Export/스크립트/파일로 처리하는 것이 안정적입니다.

(3) Export 시 “In-Memory” 로 쌓고 있지 않나요?

CSV/Excel Export 과정에서 중간 버퍼를 메모리에 많이 쌓으면 힙이 급격히 증가합니다.
가능하면 스트리밍/분할 옵션을 사용하고, Excel은 특히 메모리를 많이 사용합니다.

2) 본론: DBeaver JVM 힙 메모리 늘리는 방법

DBeaver는 실행 시 JVM 옵션을 읽는데, 설치 형태에 따라 파일 위치가 다릅니다. 핵심은 아래 2개입니다.

  • -Xms : 초기 힙
  • -Xmx : 최대 힙 (이 값을 올리면 “힙을 늘리는 것”)

권장 값 가이드

  • RAM 16GB: -Xmx4096m(4GB) 또는 -Xmx6144m(6GB)
  • RAM 32GB: -Xmx8192m(8GB)까지도 실무에서 흔함

주의: 힙을 너무 크게 잡으면 GC 지연으로 UI가 더 끊길 수 있습니다. 보통 4~8GB가 체감상 적당한 편입니다.

3) Windows: dbeaver.ini에서 -Xmx 수정

파일 위치 예시

  • 설치형(기본):
  • C:\Program Files\DBeaver\dbeaver.ini
  • zip/portable:
  • 압축 푼 폴더 안 dbeaver.ini

수정 예시

dbeaver.ini 열고 아래 항목을 찾습니다.

-Xms256m
-Xmx1024m

다음처럼 늘립니다.

-Xms512m
-Xmx4096m

저장 후 DBeaver 완전 종료 → 재실행 하세요. (프로세스가 남아 있으면 반영이 안 됩니다.)

4) macOS: DBeaver.ini 위치 및 수정

macOS는 앱 번들 내부에 ini가 있습니다.

  • Finder에서 DBeaver.app 우클릭 → “패키지 내용 보기”
  • 보통 아래 경로 중 하나:
    • DBeaver.app/Contents/Eclipse/dbeaver.ini
    • DBeaver.app/Contents/Resources/dbeaver.ini (버전에 따라 다를 수 있음)

동일하게 -Xmx 값을 올립니다.

-Xms512m
-Xmx4096m

5) Linux: 설치 방식에 따라 ini 수정

  • tar.gz 설치: 설치 폴더의 dbeaver.ini
  • snap 설치: 경로가 다를 수 있어 “설정 파일 위치”를 DBeaver 실행 로그에서 확인하는 편이 안전합니다.

6) 설정이 실제로 반영됐는지 검증하는 법

(1) DBeaver 실행 파라미터 확인(가장 확실)

  • OS별로 프로세스 확인:
    • macOS/Linux: ps aux | grep dbeaver
    • Windows: 작업 관리자에서 “명령줄” 표시 설정 후 확인

명령줄에 -Xmx4096m 같은 값이 보이면 반영된 겁니다.

(2) 여전히 OOM이 난다면: “힙 문제”가 아니라 “쿼리/결과 로딩 방식” 문제일 수 있음

힙을 4GB→8GB로 늘려도 계속 터지면 보통 아래 중 하나입니다.

  • 결과를 UI 그리드로 너무 많이 로딩
  • Export를 Excel로 한 번에 생성
  • 드라이버/플러그인에서 메모리 누수(특정 DB 드라이버에서 간헐적으로 발생)

7) 운영 팁: 힙을 늘리는 것보다 효과가 큰 5가지

  1. 결과 조회는 LIMIT + 필요한 컬럼만
  2. DBeaver의 Maximum rows 제한 적극 사용
  3. 대용량은 UI 대신 Export를 CSV로, 가능하면 분할
  4. JOIN/GROUP BY 결과가 큰 경우 임시 테이블/CTE로 단계 분리
  5. 드라이버 업데이트(특히 JDBC) 및 DBeaver 최신 버전 유지

'SQL' 카테고리의 다른 글

MYSQL 설치 에러 - This application requires latest Visual Studio 2019 x64 Redistributable 해결  (0) 2025.10.23
SQL에서의 LATERAL JOIN  (0) 2025.06.26
OLAP과 OLTP란?  (3) 2025.06.23
슈퍼키란?  (0) 2025.05.17
스키마(Schema)란?  (0) 2025.05.17