달력

62024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

'가비지 컬렉션'에 해당되는 글 1건

  1. 2017.12.20 가비지 컬렉션(Garbage Collection) , 가비지 컬렉터(Garbage Collector) 란?

가비지 컬렉션(Garbage Collection)


    • 어떤 데이터를 동적으로 메모리에 할당하여 저장을 한 후 더 이상 필요하지 않을 시(즉 어떠한 변수도 해당 메모리 영역을 가르키지 않을때) 메모리를 재 사용하기 위해 해당 데이터가 저장된 메모를 탐지 하여 해제하는 기법.

    • 가비지 (Garbage)의 의미
      • 더 이상 사용하지 않는 메모리를 뜻함
    • 가비지 컬렉션(Garbage Collection)의 의미
      • 메모리를 재 사용하기 위해 가비지를 회수 하여 메모리 공간을 늘리는 것을 뜻함.

    • 장점
      • 자동적으로 사용하지 않는 메모리를 해제를 해줌.(메모리 누수에 걱정이 없다.)
    • 단점
      • 자동적으로 메모리를 해제 한다고 하나 그 시점이 정확 하지 않아. 실시간 시스템에 적합하지가 않다.
      • 헤제 작업에 비용이 들기 때문에 오버헤드가 된다.

    • 가비지 컬렉션 발생 시기
      • 메모리 영역이 충분하지 않은 상황에서 힙메모리 할당이 이루어 지면 가비지 컬렉터가 실행하며 사용하지 않은 메모리를 수거합니다.
      • 가비지 컬렉터는 가끔식 실행이 되지만 시점을 알기 어려우며 플렛폼마다 다르게 발생합니다.



가비지 컬렉터(Garbage Collector)

    • 가비지 컬렉션이 쓰레기를 수집하는 역할이라면 가비지 컬렉터는 쓰레기를 수집하는 수집기라고 보시면 됩니다.
    • 동적으로 할당된 메모리가 더이상 사용되지 않을때 가비지 컬렉터들이 탐색 -> 분리 -> 수집을 합니다.
    • 가비지 컬렉터 역시 CPU와 메모리 자원을 사용하기 때문에 메모리 할당을 자주하지 않는 편이 좋다.


코딩 작업시 가비지 컬렉션 최적화 방법.


1. 필요 이상 객체를 늘리지 않는다.

2. 객체 생성하고 삭제 하는 작업 보단 재활용 하는 수단을 찾기.

3. 복잡한 참조관계 줄이기. 관계가 복잡하면 가비지 컬렉션 이후 메모리가 살아 있을 수 있는 문제 발생.

Posted by JakeGD
|