[Java] Garage Collection

Minsang Yu·2023년 4월 2일
0

Garbage Collection이란?

  • 자바 메모리 관리 방법중 하나로 JVM의 Heap영역에서 동적으로 할당했던 메모리 영역 중 필요 없게 된 메모리 영역을 주기적으로 삭제하는 프로세스

  • Garbage Collection의 장점

    • C나 C++ 에서는 이러한 가비지 컬렉션 없이 프로그래머가 수동으로 메모리 할당과 해제를 해줘야 하는 반면 Java는 JVM에 탑재되어 있는 가비지 컬렉터가 메모리 관리를 대행해줌
    • 메모리관리, 메모리 누사 문제에서 완벽하게 관리하지 않아도 되어 개발에만 집중할수 있다.
  • Garbage Collection의 단점

    • 개발자가 메모리를 언제 해제되는지 정확하게 알 수 없다.
    • GC가 동작하는 동안에는 다른 동작을 멈추기 때문에 오버헤드가 발생한다.
      • 이로인해 GC가 너무 자주 동작할 경우 성능 하락의 문제가 된다.
      • 실시간으로 계속 동작해주어야 하는 시스템에는 접합하지 않다.

#### **Garbage Collection의 원리** GC작업을 하는 가비지 콜렉터는 다음과 같은 역할을 한다. 1. 메모리할당 2. 사용중인 메모리 인식 3. 사용하지 않는 메모리인식

Java의 효율적인 메모리 관리

GC가 메모리 관리를 해주지만 만능은 아니다. Major GC같은 경우는 시간이 오래걸리고 시스템이 멈추기 떄문에 최대한 GC를 줄일 필요가 있다. GC는 비 사용중인 메모리를 모두 회수하지않는다. 잘못된 변수 선언으로 계속해서 객체가 메모리상에 잡혀있어서 결국 Memory Leak 이 생겨 시스템 메모리를 무한정으로 잡아먹는 경우가 있다.

  • 객체 사용후 반드시 reference를 null로 지정한다.
  
	MyObject obj = new MyOject()
    
	...
	... // 객체를 사용해서 작업 
    ...
    
    
    // 사용이 끝난후 null로 지정해 해제를 해준다.
    obj = null; 
profile
Jr. DataEngineer

0개의 댓글