1. Created (생성)
- 객체를 위한 메모리 공간을 Heap 에 할당
- Super class 의 생성자 호출을 하면서 initializer 및 instance variable 의 initialize 를 수행
- 객체의 생성자를 수행
2. In use or reachable (사용중)
- 객체가 생성되어 다른 객체에 의해 참조되어 있는 상태
- Strongly referenced 상태 라고 부름
3. Invisible (사용 중이며 접근불가)
- Strongly referenced 상태이지만 직접 접근할 수 없는 상태
- GC의 대상이 되지 않음
- foo 의 역할이 종료되었음에도 run() 이 리턴 될 때 까지 Strong reference 를 가짐
- 즉, strong reference 상태를 가졌지만 foo를 다시 접근할 수 없기 때문에 메모리를 계속 유지하게 되는 invisible 상태가 됨
4. Unreachable (사용되지 않음)
- Strong reference 가 존재하지 않을 경우 GC 대상 큐에 들어감
5. Collected (GC 대상이 되는 상태)
- 메모리 해제단계의 도임부
- GC가 객체의 finilze() 가 정의되어 있는지 판단
- 있다면 finilzer 라는 큐에 넣음
- 없다면 finalized 상태로 전환
6. Finalized (Finalize를 거친 상태)
- Finalizer 를 통해 finalize 가 실행된 후의 상태
7. Deallocated (메모리 해제된 상태)
- 메모리 반환이 끝난 상태로 GC의 동작이 마무리 된 상태