1.4 이전 IBM 은 기본적으로 Generation Heap 을 사용하지 않았다.
하지만 1.5 버전부터는 IBM 또한 Generation Heap 을 사용하기 시작하였습니다.
IBM 은 기본적으로 Mark abd Sweep(Compaction) 기반으로 GC 를 진행한다.
Mark and Sweep 이 Minor, Compcation 이 Major 에 해당하며, 결국 Major 를 줄이는 방식의 GC 이다.
모든 Live Object 에 대한 Mark
Mark Bit Vector 에 주소를 저장시킨다.
Live Object 의 주소인 Mark Bit Vector,
Allocation Object 의 주소인 Alloc Bit Vector
둘을 비교하여 Garbage 를 삭제한다
Parallel Bit Sweep 가능
재정렬, Free Memory 확보가 가능해짐. 단편화를 방지.
언제?
- Heap 이 5% 이하 (IBM 커맨드 확인 필요)
- 128kb 이하일때
- sweep 후 free space 가 적을 때
- System.gc() 실행시
-Xgcpolicy:optthrupt
처리량 최적화 정책
Mark Sweep Compact 단계를 수행
ibm 6 까지 default 였다.
처리량은 높은 편이나, 긴 STW 가 발생한다.
-Xgcpolicy:optavgpause
일시정지 최적화 정책
Concurrent Mark 를 통해 STW 최소화
-Xgcpolicy:gencon
response time, throughput 동시 향상
CPU 부하 증가.
매우 짧은 작업으로, concurrent 한 작업중 도중에 발생하기도 한다.
Live Object 를 찾아 Survivor 로 Object 를 옮긴다.
-Xgc:scvTenureAge age가 되면 Promotion 된다. default는 10 이며 범위는 1~14 이다.
Mark Sweep Compaction 작업 진행. Sweep 위주로 작업, Compaction 은 가끔씩 수행한다
-Xgcpolicy:subpool
java heap 을 여러 개의 Sub Pool 로 나누어 관리.
CPU가 16프로세스 (IBM 기준 9프로세스 참고) 이상에서 권장된다.
7 버전 이후에는 삭제되고, 실행시 자동으로 optthrupt 가 실행된다.