Java

[Java] 인스턴스 생성과 힙 메모리

hyomee2 2024. 7. 5. 17:39

1. 인스턴스

- 실제 클래스 기반으로 생성된 인스턴스는 각각 다른 멤버 변수 값을 갖게 된다.

  (같은 클래스 기반으로 생성되어도 각 인스턴스는 메모리 내 각각 다른 위치를 차지하기 때문이다.)

- new 키워드를 사용해서 인스턴스 생성 -> 이 때 메모리(동적 메모리, heap)를 할당받는다.

 

 

2. 힙 메모리

- 생성된 인스턴스는 동적 메모리(heap)에 할당된다.

- C나 C++에서는 사용한 동적 메모리를 free()나 delete을 이용해서 해제시켜야 하지만, 

  자바에서는 gabage collector가 주기적으로 사용하지 않는 메모리를 수거해준다. 

 

3. 참조 변수, 참조 값

  Student studentLee = new Student();
  studentLee.studentName = "홍길동";

  System.out.println(studentLee);  
  // 이렇게 해주면 studentLee가 차지하는 메모리의 주소가 나온다.
  // 근데 이건 물리적인 주소는 아니고, jvm이 준 가상 주소.
  
  // 여기서 참조변수는 studentLee
  
  // 멤버변수는 초기화를 해주지 않으면 null로 자동 초기화되지만, 지역변수는 초기화를 꼭 해줘야 한다.

 

4. 용어 정리

- 객체 : 객체 지향 프로그램의 대상, 생성된 인스턴스
- 클래스 : 객체를 프로그래밍 하기위해 코드로 정의해 놓은 상태
- 인스턴스 : new 키워드를 사용하여 클래스를 메모리에 생성한 상태

   ㄴ 간단하게 예시를 들자면,

        클래스는 자동차 설계도, 객체는 실제 자동차, 인스턴스는 내 자동차 딱 그 하나라고 생각할 수 있다.

- 참조 변수: 메모리에 생성된 인스턴스를 가리키는 변수

- 참조 값: 생성된 인스턴스의 메모리 주소 값

 

 

* 본 게시글은

패스트캠퍼스 "한 번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지"

강의를 참고하여 정리한 내용입니다.

'Java' 카테고리의 다른 글

[Java] 배열  (0) 2024.07.11
static 변수  (0) 2024.07.07
[Java] 객체 자신을 가리키는 this  (0) 2024.07.07
접근 제어 지시자(access modifier)와 캡슐화  (0) 2024.07.05
생성자(constructor)와 생성자 오버로딩  (0) 2024.07.05