본문 바로가기
개발 공부/SQL, DB

[Oracle/DBeaver] Java heap space Error, Unhandled event loop exception(Java heap 공간 메모리 늘리기)

by momo'sdad 2023. 11. 22.

Java heap space Error, Unhandled event loop exception

DBeaver에서 csv파일로 데이터를 가져오기를 하는데 Java heap space Error가 떴다.

 

 

대용량의 테이블을 생성하거나 csv 데이터를 가져오기, 내보내기를 할 때

JVM(Java Virtual Machine)의 heap공간에 모든 객체를 저장하는데

그 공간이 부족하여 발생한다.


해결방법은

1. Heap 공간 증가 : JVM힙 공간을 늘려 메모리 할당량을 늘림

2. 메모리 누수 확인

3. 객체 크기 최적화 : 불필요한 객체 속성을 제거

4. 데이터베이스 연결 관리 : 사용하지 않는 연결을 제대로 닫고 반환하는 코드 작성

5. 대용량 데이터 처리 : bulk insert나 페이지네이션을 사용하여 묶음 단위로 데이터를 처리


 

나와 같은 경우에는 1번의 Heap공간을 늘려주니 바로 해결이 됐다.

해결방법

첫번째 해결방법

1. DBeaver아이콘의 오른쪽을 클릭한다.

 

2. 맨 아래 속성을 클릭한다.

 

3. DBeaver 속성바로가기 탭을 누른다.

 

4. 대상에 맨 뒷부분으로 가서 -vmargs -XmsOOOOm를 붙여준다.

OOOO은 자기가 바꾸고자 하는 용량을 쓴다.

 -Xms8192m는 DBeaver 구동시 heap 메모리를

최대 8GB로 할당하고 올리겠다는 뜻이다.

붙여준 후 확인을 누른다.

 

5. 확인을 하려면 DB를 접속해서 위의 메뉴탭에서 윈도우를 누르고

설정을 클릭한다.

 

6. 환경설정의 일반에서 아래의 힙 상태 표시를 체크한후 Apply and Close를 클릭한다.

 

7. 설정이 잘됐다면 아래처럼 최대용량이 8192M로 바뀐 것을 알 수 있다.

(처음은 104M였음)

 

위의 방법이 안될때

두번째 해결방법

 

1. 검색창에 시스템 환경 변수 편집을 입력하고 

시스템 환경 변수 편집을 클릭한다.

 

2. 환경 변수를 클릭한다.

 

3. 환경 변수 창에서 시스템 변수에 새로 만들기를 클릭한다.

 

4. 변수 이름은 _JAVA_OPTIONS,

변수 값은 -XmsOOOOM를 입력한다.

위의 해결 방법과 같이 OOOO은 자기가 바꾸고자 하는 용량을 넣는다.

 -Xms8192M은 최대 Heap용량을 8GB로 할당하겠다는 뜻이다.

입력한 후 확인을 누른다.

 

확인을 누른 후 위에서 DBeaver에서 힙 상태를 표시를 설정하여

확인하면 최대 Heap 용량이 바뀐 것을 알수가 있다.

 

반응형