Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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
Tags more
Archives
Today
Total
관리 메뉴

ultra_dev

GC(Garbage Collector) 본문

Computer Science

GC(Garbage Collector)

ultra_dev 2023. 4. 15. 01:46

GC

:가비지 컬렉터

 

  • 메모리 관리 방법중 하나로 시스템에서 더 이상 사용하지 않는 동적 할당된 메모리 블럭을 찾아서 자동으로 사용 가능한 자원으로 회수시켜준다.
  • Jvm 메모리의 Heap 영역에 위치한 GC는 Unreachable Object를 찾아 제거함으로써 Heap영역의 메모리를 관리 (해당 행위를 Mark and Sweep이라고 부름)
  • Unreachable Object : stack에 도달할 수 없는 객체 
  • stop the world : GC을 실행하기 위해 JVM이 애플리케이션 실행을 멈추는 것이다.
  • stop-the-world가 발생하면 GC를 실행하는 쓰레드를 제외한 나머지 쓰레드는 모두 작업을 멈춘다. GC 작업을 완료한 이후에야 중단했던 작업을 다시 시작한다.
  • 만약 더 이상 사용되지 않는 객체들이 GC(가비지 컬렉션)에 의해 소멸되지 않고 누적된다면, 메모리 누수(MemoryLeak) 현상이 발생
    • 메모리 누수가 쌓이면 메모리가 부족하게 돼서 결과적으로 OutOfMemoryError 가 발생
    • 가비지 컬렉터는 메모리 누수인지도 모르고, 메모리가 부족하니까 계속 메모리를 회수하려고 가비지 컬렉션을 지속적으로 발생시킴
    • 결국 너무 자주 일어나는 가비지 컬렉션은 성능상 문제를 일으키게 됨
  • 메모리 누수가 의심되면 HeapDump 분석을 통해서 의심가는 부분을 잡아내고, 추후 운영 단계에서는 스카우터 같은 APM(Application Performance Management)을 활용해서 모니터링 체계를 구축하는 방법을 추천

 

+ APM

  • 어플리케이션의 성능 관리 서비스
  • 미들웨어(톰캣, 제이보스 등)에서 일어나는 트랜잭션을 분석하여 성능에 영향을 미치는 부분을 탐지
  • 서비스에 문제가 발생하거나 비효율적으로 서비스가 운영되고 있을 때 서버로그를 뒤적거리면서 문제점을 찾기에는 너무나 많은 시간이 소요되고 찾기도 힘들다.
  • 이 때, APM을 사용하면 문제점을 빠르게 탐지할 수 있다.

 

 

+

추가 키워드

 

에덴 / 영 , 올드제네레이션

 

객체 힙메모리에 할당 시 먼저 에덴에 할당, 

꽉 차면 영제네레이션 내 서바이벌 영역 왔다갔다하면서

age올림

임계점 돌파시 올드제네레이션 영역으로 보내버림

 

이 올드제네레이션 영역에 있는 객체는 오랫동안 지워지지 않았다는 거니 메이저GC가 아니면 지우질 않음

 

이를 통해 GC를 효율적으로 사용

'Computer Science' 카테고리의 다른 글

HTTP/3 -> 왜 TCP가 아닌 UDP를 사용할까  (0) 2023.04.11
CORS란  (0) 2023.04.07
RDB와 NOSQL  (0) 2023.04.06
오버로딩, 오버라이딩  (0) 2023.04.05
시간 복잡도, 공간 복잡도  (0) 2023.04.05
Comments