생명주기
- 객체가 생성되어 메모리에 올라가는 시점부터 파괴되어 메모리에서 사라지게 되는 기간
변수의 생명주기
1.인스턴스 변수
- 객체가 생성될 때 생성되고 GC로 인해 객체가 소멸될 때 함께 소멸된다.
2.클래스 변수
- 클래스가 처음 호출될 때 생성되고 자바 어플리케이션이 종료되는 시점에 소멸된다.
3.매개 변수
- foo()메서드가 호출될 때 생성되고 foo()메서드의 종료시점에 소멸된다.
4.지역 변수
- '{'가 시작되는 시점에 생성되고 '}'로 끝나는 시점에 소멸된다.
객체의 생명주기
1.Created
- 객체를 위한 메모리 공간을 Heap 에 할당합니다. 그 다음 Super class의 생성자 호출을 하면서 initializer 및 instance variable의 initialize 를 수행한 후에 객체의 생성자를 수행합니다.
2.In use or reachable
- 객체가 생성되어 다른 객체에 의해 참조되어 있는 상태입니다. 이 상태를 Strongly referenced 상태 라고 합니다.
3.Invisible
- Invisible 상태는 Strongly referenced 는 되어 있지만 직접 접근할 수 없는 상태이며 바로 GC의 대상이 되지 않는다.
public void run(){
Object foo = new Object();
foo.doSomething();
while( true ){
}
}
*foo는 아직 reachable하지만 while 로 인해 실질적으로 접근은 못하는 상태로 메모리가 유지된다.
4.Unreachable
잘봤습니다. 좋은 글 감사합니다.