티스토리 뷰
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
- 컴퓨터 시간
- opensource
- 성능
- Swift 2.0
- 자바 성능
- 성능개선
- 자바
- javascript
- 메모리
- Java8
- RAMDA
- react
- 날짜
- Stream
- 람다
- 리액트
- Clojure
- json
- 자료구조
- 클로저
- 퍼포먼스
- Docker
- 코어
- rambda
- 알람
- gitlab
- 시간
- 프로세서
- Java
- Jackson
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |