태그 보관물: Garbage Collector

가비지 컬렉터(garbage collector)

자바의 가비지 컬렉터(Garbage Collector) 이슈는 성능과 더불어 자원 해제라는 막중한 역할을 하기 때문에 중요하게 파악을 해 둬야 되는 내용입니다. 아래는 자바에서 지원하고 있는 가비지 컬렉터의 영역별 내용과 형태에 대한 내용이다.

– serial collector : young, old 영역, java 1.4 버전까지 default collector로 사용, single cpu만 사용
– parallel collector : young 영역, java 5 버전부터 CPU 2, MEM 2G 이상(Hot Spot VM
)일 경우 자동선택
– parallel compacting collector : old 영역, option으로 지정해야 선택됨
– cms(concurrent mark-sweep) collector : old 영역, option으로 지정해야 선택됨
– G1 collector: young, old 영역,  1.6.0_14(NUMA 구조 지원, 1.6.0_18 버전에 성능에 대한 언급)부터 사용이 가능하다. option으로 지정해야 선택됨. “early access software”, 자바 비즈니스 라이선스를 구매하지 않은 고객은 사용을 하지 않는 것이 좋다고 한다. Java 7버전을 타켓으로 하고 있다고 한다.

자바 가비지 컬렉션 뷰어(Garbage Collection Viewer)

자바의 가장 큰 장점은 애플리케이션이 사용하는 자원을 관리하지 않아도 자동으로 자원을 해제시키는 가비지 컬렉터의 존재이다. 자바로 개발하는 경우에는 가비지 컬렉션의 기본 지식을 알고 있는 것이 애플리케이션 개발 및 디버깅에 도움을 준다.

그래서 자바 애플리케이션의 메모리의 상태(가비지 컬렉션의 유무와 점유율 등)를 비주얼로 볼 수 있다면, 애플리케이션의 모니터링에 매우 도움이 될 수 있다. 그래서 가비지 컬렉션을 비주얼하게 보여주는 몇 가지 툴을 정리해 봤다.

* http://java.sun.com/performance/jvmstat/
* http://docs.hp.com/en/5991-6757/ch03s04.html
* http://java.sun.com/developer/technicalArticles/Programming/GCPortal/
* http://www.javaperformancetuning.com/tools/gcviewer/index.shtml