본문 바로가기

Server Oriented/Java & JSP

[모음글] Garbage Collector, GC 가비지 컬렉터


#1. Java Garbage Collection, 개념

https://d2.naver.com/helloworld/1329

- MinorGC(Young Generation; Eden -> Survivor), MajorGC(Old Generation, Permanent Generation)

- GC 종류

  Serial GC, CPU 1개 짜리,

  Parallel GC(Throughput GC), RAM 과 CPU 많을 때

  Parallel Old GC(Parallel Compacting GC), JDK 5 update 6 부터 제공

  Concurrent Mark & Sweep GC(이하 CMS GC)

  G1(Garbage First) GC, 성능 우선(Young 과 Old 개념 없음), JDK 7 부터 제공



#2. Java Garbage Collection Minitoring, 모니터링

http://helloworld.naver.com/helloworld/helloworld/6043


Heap Dump

http://book.naver.com/bookdb/book_detail.nhn?bid=6654751



#3. 튜닝

https://d2.naver.com/helloworld/37111

FullGC 줄이기

Old 



상기 내용들은, GC 개념부터 모니터링과 튜닝을 다루는데..

JVM 을 다루는 모든 곳에서 한 번 쯤 생각해 볼만한 문제임.

개발자 입장에서는 서버 튜닝과 이클립스 튜닝이 있겠는데,

이클립스 튜닝은 eclipse.ini 설정 튜닝이니까 관심있겠지만..

서버 튜닝은 전문 엔지니어에게 맡기는 것이 안전.. ㅠ.


개발자 입장에서는 FullGC 가 빈번하게 일어나지 않도록,

되도록이면 로컬 단위로 Collection 을 사용,

또는 안전을 위해서 .jsp 나 Class method 에 try ~ catch ~ finally 로 묶고

Collection 을 초기화 하는 작업이 필요.

finally 부분에 Collection 을 clear() 한 다음에 null 을 세팅해 주면 

서버에 세팅된 GC 룰에 의해 처리가 됨.