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 키워드를 사용하여 클래스를 메모리에 생성한 상태
멤버 변수 : 클래스의 속성, 특성
메서드 : 멤버변수를 이용하여 클래스의 기능을 구현한 함수
참조변수 : 메모리에 생성된 인스턴스를 가리키는 변수
참조 값 : 생성된 인스턴스의 메모리 주소 값