Eden
영역에 객체가 지정된다. Eden
영역이 꽉차면, GC 를 통해서 삭제되거나 살아남은 경우에는 Survivor
영역으로 옮겨진다. Survivor
영역은 2개로 나뉘어 있는데, 둘 중 하나는 반드시 비어 있어야 한다. 이런 작업을 반복하다가 Old
영역으로 이동하게 된다. (단, Young
영역에서 바로 Old
영역으로 이동하는 경우도 있는데, 객체의 크기가 아주 커서 Survivor
영역 보다 큰 경우다.)Young
영역에서 발생하는 GC를 마이너 GC
라고 한다. Old
영역이나 Perm
영역에서 발생하는 GC 를 메이저 GC
라고 한다.OutOfMemoryError
더 이상 사용 가능한 메모리 영역이 없는데, 계속 메모리를 할당하려고 할 때
OutOfMemoryError
이 발생하여 JVM 이 다운될 수 있다.
Old
영역을 연속적으로 처리하며, 하나의 CPU 를 사용한다. stop-the world
mark-sweep-compact
: Old
영역으로 이동된 객체들 중 살아 있는 객체와 쓰레기 객체를 식별한다. 쓰레기 객체를 삭제하고, 살아 있는 객체를 한 곳으로 모은다.Mark-Sweep-Compact
Young
영역에서는 (Serial Collector 와 달리) 병렬적으로 처리한다.Old
영역에서는 mark-sweep-compact
를 사용한다.Eden
, Survivor
, Old
역할을 지정한다.full GC
가 실행 중일 때에는 JVM 에서 처리되지 않는다. 따라서, GC 를 많이 할수록 응답 시간에 영향을 끼치게 된다.System.gc()
등의 메소드로