생명주기(스코프)

codakcodak·2023년 7월 17일
0

Java

목록 보기
7/17

생명주기

  • 객체가 생성되어 메모리에 올라가는 시점부터 파괴되어 메모리에서 사라지게 되는 기간

변수의 생명주기

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 ){
        // do something.
    }
}

*foo는 아직 reachable하지만 while 로 인해 실질적으로 접근은 못하는 상태로 메모리가 유지된다.

4.Unreachable

profile
숲을 보는 코더

2개의 댓글

comment-user-thumbnail
2023년 7월 17일

잘봤습니다. 좋은 글 감사합니다.

답글 달기
comment-user-thumbnail
2023년 7월 17일

저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!

답글 달기