본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Java] Generational Concurrent GC 에 대해 알아보자

by 돼지왕 왕돼지 2020. 7. 28.
반응형


java generational concurrent gc

https://www.ibm.com/support/knowledgecenter/en/SSB23S_1.1.0.2019/com.ibm.java.vm.80.doc/docs/mm_gc_generational.html


-

Generational Concurrent Garbage Collection 전략은 짧은 기간동안만 존재하는 object 가 많은 앱에 적합하다. 



-

-Xgcpolicy:gencon command line option 으로 해당 GC 를 activate 시킬 수 있다.



-

Java heap 은 두 영역으로 나뉜다.

하나는 새로운(new or nursery) 영역, 그리고 다른 하나는 오래된(old or tenured(재임)) 영역이다.

new area에 생성된 objects 들이 오랜 기간동안 참조를 유지한다면 이것들은 old area 로 이동한다.

참조가 오래 유지된다는 것은 GC 가 되오는 동안 계속 살아남은 녀석들이다. (그 기간을 tenure age 라고 부른다.)



-

new area 는 2개의 논리적 공간으로 구분된다.

allocate 와 survivor 이다.

object 들은 allocate space 로 할당된다.

이 영역이 꽉 차면 GC 가 scavenge(쓰레기 뒤지기) 라고 부르는 작업을 시작한다.

쓰레기를 뒤지는 동안, reachable 한 녀석들은 survivor space 로 이동하며, 이 중 tenured age 를 넘긴 녀석들은 tenured space(old area)로 이동한다.

모든 이동작업이 완료되면, survivor space 와 allocate space 는 역할을 바꾼다 (allocate space 는 empty 가 되고, survivor space 는 gc 이후 모두 reachable 인 것이다.)



-

끝!!




반응형

댓글