편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.
최신판 | 당신의 편집 | ||
47번째 줄: | 47번째 줄: | ||
===GC 오버헤드=== | ===GC 오버헤드=== | ||
자바는 오브젝트가 버려질 경우, 해당 오브젝트를 바로 해제하지 않고, GC가 트리거되었을 때 해제하게 된다. 이 GC 트리거는 비결정적이며, GC 과정이 CPU-intensive 하므로, 어플리케이션은 불규칙적인 성능 저하를 가져오게 된다. 이를 극복하기 위해 지난 20년간 수 많은 노력이 있었으며, Java 8에 이르러서는 메모리와 GC에 대한 부분이 획기적으로 개선되어 호평을 듣고 있다. | 자바는 오브젝트가 버려질 경우, 해당 오브젝트를 바로 해제하지 않고, GC가 트리거되었을 때 해제하게 된다. 이 GC 트리거는 비결정적이며, GC 과정이 CPU-intensive 하므로, 어플리케이션은 불규칙적인 성능 저하를 가져오게 된다. 이를 극복하기 위해 지난 20년간 수 많은 노력이 있었으며, Java 8에 이르러서는 메모리와 GC에 대한 부분이 획기적으로 개선되어 호평을 듣고 있다. | ||
* Serial Garbage Collector: 가장 단순한 초기 형태. 단일 Thread를 사용하는 환경을 위해 설계되었으며 GC에 따른 성능 저하가 가장 크다. 즉, 멀티 코어가 기본인 요즘에는 안 쓴다. | * Serial Garbage Collector: 가장 단순한 초기 형태. 단일 Thread를 사용하는 환경을 위해 설계되었으며 GC에 따른 성능 저하가 가장 크다. 즉, 멀티 코어가 기본인 요즘에는 안 쓴다. | ||
* Parallel Garbage Collector: 위의 것을 멀티 Thread 환경에서 동작하게 개선한 것. 좀 나아지긴 했지만 여전히 무시할 수 없을 정도로 프리징을 경험하게 된다. | * Parallel Garbage Collector: 위의 것을 멀티 Thread 환경에서 동작하게 개선한 것. 좀 나아지긴 했지만 여전히 무시할 수 없을 정도로 프리징을 경험하게 된다. |