객체 생성과 소멸 시 내부 동작 과정

정지원·2022년 5월 17일
0

객체 생성

오브젝트의 생성 과정
A라는 클래스를 만들때,

  1. A 클래스의 static 멤버(field/method) 에 처음으로 접근하거나 , 생성자를 처음으로 호출 하는 경우 java interpreter는 A class 를 JVM 상에 올려야 한다. (classpath 상에서 A class 를 뒤짐)

  2. A class 가 loaded 된 후에 A의 모든 static initiallization (class variable, static initializer) 이 수행이 된다. (JVM 기동된 후 딱 한번만 실행됨)

  3. new A() 를 수행할 때 , JVM 의 heap 영역에 A 오브젝트를 위한 메모리를 할당한다.

  4. 해당 오브젝트에 대한 메모리 영역에는 primitive type 은 0, reference type 은 null 로 초기 세팅된다.
    new 를 통해 heap 에다 메모리를 할당만 했을 뿐이지, 어떤 초기화도 일어나지 않는다.

  5. 멤버 field의 선언문에 초기화를 같이 하고 있다면 이 초기화가 수행된다.
    ex) private User user = new User();

  6. instance block 수행

  7. 그 후에 생성자가 호출된다.

이해하기 쉬운 예제 바로 보기

객체 소멸

-> 더 이상 필요 없는 (사용되지 않는) 메모리는 garbage 라고 부르며, 가비지 컬렉터에 의해 적절한 시점에 자동으로 수집되어 가용 메모리에 리턴된다.

수거 대상 : 객체나 배열 등의 참조변수들을 가리키는 레퍼런스가 하나도 없어지는 시기.

profile
지속적인 발전, 태도

0개의 댓글