티스토리 뷰

Low-Latency Collector로도 알려져있으며 힙 메모리가 클 때 적합하다.

Young에 대한 GC는 Parallel Collector와 동일하지만 Old에 대한 GC는 다음의 단계를 거친다.


Old영역에 대한 GC

1. 초기표시 : 매우 짧은 대기시간으로 살아있는 객체를 찾는다.

2. Concurrent 표시 : 서버수행과 동시에 살아있는 객체에 표시

3. 재표시 : 2번 단계에서 표시하는 동안 변경된 객체를 다시 표시

4. Cuncurrent Sweep : 표시되어 있는 쓰레기들을 정리


이 방식은 밀집단계를 거치지 않기 때문에 메모리를 몰아놓는 작업을 수행하지 않는다.

그러므로 GC 이후에 빈공간이 발생하므로 -XX:CMSInitiatingOccupancyFraction=n 옵션으로

Old 영역의 %를 지정할 수 있다. 이의 기본값은 68이다.


이 방식은 2개 이상의 프로세서를 사용하는 서버에 적당하다. 적합한 대상으로는 웹서버가 있다.

-XX:+UseConcMarkSweepGC 옵션으로 지정할 수 있다.


추가적으로 이 방식은 점진적 방식을 지원한다.

이는 Young의 GC를 더 잘게 쪼개어 서버의 대기시간을 줄이므로 

CPU가 많지 않지만 대기시간이 짧아야 할 때 사용하면 좋다.


이를 사용하려면 +XX:+CMSIncrementalMode 옵션이나 -Xincgc 옵션을 사용하면 된다.

하지만 이 옵션을 사용하면 예기치 못한 성능저하가 발생가능하므로

충분한 테스트를 한후 현업에 적용해야한다.

'JAVA' 카테고리의 다른 글

[GC] 강제로 GC시키기  (0) 2015.04.24
[GC의 방식] Garbage First (G1) Collector  (0) 2015.04.24
[GC의 방식] Parallel Compacting Collector  (0) 2015.04.24
[GC의 방식] Parallel Collector  (0) 2015.04.24
[GC의 방식] Serial Collector  (0) 2015.04.24
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/07   »
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 31
글 보관함