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를 늘릴 수 있다.
'그 외 ... (정리해야함) > 꿀팁' 카테고리의 다른 글
[JAVA] static import 사용하기 (0) | 2019.04.05 |
---|---|
[JAVA] 이클립스(eclipse) 메모리 설정 (0) | 2019.03.19 |
[Java] String to InputStream(String을 InputStream으로 변환) (0) | 2019.02.27 |
SQL Developer 에서 MS-SQL 접속하기 (0) | 2018.11.07 |
[JAVA] Map에 있는 데이터를 Value기준으로 정렬하기 (1) | 2018.09.18 |