그 외 ... (정리해야함)/꿀팁

[JAVA] JVM 메모리 관련 설정(옵션)

깡냉쓰 2019. 3. 19. 17:09
728x90
반응형
JVM 메모리 구조 참조

2018/06/29 - [프로그래밍 노트/JAVA] - [JAVA] JVM 메모리구조

2020/12/19 - [프로그래밍 노트/JAVA] - [JAVA] JVM 가상머신 메모리 구조

2021/01/22 - [프로그래밍 노트/JAVA] - [JAVA] 가비지 컬렉터(GarabageCollector,GC)

 

 

애플리케이션을 실행하다가, outOfMemoryError 가 발생하였다면 우리는 JVM의 메모리 설정을 다시해 줄 필요가 있다.

java.lang.OutOfMemoryError : Java heap space

  • Heap size의 부족으로 Java Object를 Heap에 할당하지 못한 경우 발생하는 에러

java.lang.OutOfMemoryError : PermGen space

  • Class나 method 객체를 PermGen space에 할당하지 못하는 경우 발생하는 에러
  • 너무 많은 클래스를 로드할 때 발생하며, 주로 잘못된 설계/구현에 의해 발생

java.lang.OutOfMemoryError : (Native method)

  • JVM에 설정된 것 보다 큰 native 메모리가 호출될 때 발생
 
 

java heap space 에러는 JVM 옵션 설정을 하지 않은 경우에 많이 발생한다.

Setting/Increase JVM heap size

It is possible to increase heap size allocated by the Java Virtual Machine(JVM) by using command line options.

-Xms set initial Java heap size(자바 초기 heap 사이즈 설정)

-Xmx set maximum Java heap size(자바 최고 heap 사이즈 설정)

-Xss set Java thread stack size(자바 thread stack 사이즈 설정)

 

우리는 JVM에 위와같은 옵션을 줘서 JVM의 heap size를 늘려줄 수 있다.

 

eclipse에서 JVM heap size를 늘려주는 방법

프로젝트 > properties > Run/Debug Settings

 

 

Arguments탭에서 VM arguments 란에 원하는 heap size를 추가

 

-Xms1024m -Xmx2048m

 

totalMemory()를 사용하여 JVM heap size를 구할 수 있다.

public class HeapSize{ 
	public static void main(String[] args){ 
    // get the jvm heap size 
    long heapSize = Runtime.getRuntime().totalMemory(); System.out.println("Heap Size : " + heapSize); System.out.println("Heap Size(M) : " + heapSize / (1024 * 1024) + " MB"); 
   	} 
} 

 

설정 전, 후 Heap Size 를 찍어보면 아래와 같다.

설정 전

설정 후

Heap Size : 244 MB

Heap Size : 982 MB

JVM 구동시 옵션을 주면, Heap Size를 늘릴 수 있다.

728x90
반응형