JAVA 공부하기!

[JAVA] 인스턴스와 힙메모리

hyer!! 2022. 3. 1. 21:16
public class AnimalsTest{
	public static void main(String[] args) {

        Animals animalCat = new Animals();	//인스턴스 생성
        animalCat.name = "쿵스";
        animalCat.age = 2;
        animalCat.showAnimal();


        Animals animalDog = new Animals();	//인스턴스 생성
        animalDog.name = "콩스";
        animalDog.age = 3;
        animalDog.showAnimal();
    }
}
  • new 키워드를 통해서 여러개의 객체를 생성 할 수 있는데 그 객체를 인스턴스라고 한다.
  • 생성된 인스턴스는 동적 메모리(heap memory)에 할당된다.
  • 자바에서 Gabage Collector가 주기적으로 사용하지 않는 메모리를 수거한다.
  • 하나의 클래스로부터 여러 개의 인스턴스가 생성되고 각각 다른 메모리 주소를 가진다.
  • animalCat는 생성된 Animals 인스턴스를 가르키는 참조변수이다.
  • 참조변수에 "."을 붙이면 클래스가 가지고 있는 멤버변수나 메소드를 참조할 수 있다.
  • 참조변수(animalCat)는 지역변수이기 때문에 Stack메모리에 할당되고 new 키워드로 생성된 Animals 인스턴스는 생성된 순간 Heap 메모리에 잡히게 된다.
  • 참조변수는 생성된 메모리가 Heap메모리 어디에 잡혀있는지 참조하는 역할이다.
  • 각각의 인스턴스는 생성된 순간 별개의 독립적인 메모리로 잡히게 되고 참조변수는 해당 인스턴스의 메모리 위치를 참조하는 역할을 한다.

용어 정리!

클래스 : 객체를 프로그래밍 하기위해 코드로 정의해 놓은 상태

인스턴스 : new 키워드를 사용하여 클래스를 메모리에 생성한 상태

멤버 변수 : 클래스의 속성, 특성

메서드 : 멤버변수를 이용하여 클래스의 기능을 구현한 함수

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

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