. NET4에서는 워크 스테이션 GC용으로 백그라운드 GC를 가능하게 했다. 그 이후 힙 사이즈의 상한이 몇 기가바이트에서 수십 기가바이트인 컴퓨터를 자주 보게 되었다.

 

NET Framework 팀이 소유한 최적화된 병렬 가베지컬렉터라도 이런 큰 힙은 컬렉션에 몇 초가 걸리고 그 동안 응용 프로그램 스레드를 차단한다. 서버용 백그라운드 GC에서는 서버의 가베지컬렉터에  동시 실행(병렬 실행) 가베컬렉션의 지원을 도입하고 있다. 이에 따라 애플리케이션의 쓰루풋이 높은 상태를 유지하면서 장시간의 블록이 발생하는 가베 컬렉션을 최소한으로 억제할 수 있다.

 

서버 GC를 사용하는 경우 서버의 백그라운드 GC가 자동적으로 시작되도록 이 새 기능을 사용하는데 필요한 것은 아무것도 없다. 클라이언트 GC 및 서버 GC라도 백그라운드 GC의 고도의 특성은 같으며 다음과 같은 특성이 있다.

 

l  완전 GC(세대 2)만을 백그라우드로 할 수 있다.

l  백그라운드 GC는 최적화를 실시하지 않는다.

l  포어 그라운드 GC(세대 0/세대 1 GC)는 백그라운드 GC 안에서 할 수 있으며, 서버 GC는 전용 서버 GC 스레드에서 행해진다.

l  완전한 블로킹 GC도 전용의 서버 GC 스레드에서 행한다.

 

 

출처: http://msdn.microsoft.com/ko-kr/magazine/hh882452(en-us).aspx

저작자 표시
신고
by 흥배 2013.11.21 08:00
| 1 |

티스토리 툴바