뚜벅이 한걸음

인스턴스와 힙메모리 본문

java

인스턴스와 힙메모리

뚜벅뚜벅뚜벅이 2022. 7. 10. 15:09
반응형

앞의 게시물에서 인스턴스에 대해서 알아보았다.

인스턴스에 대해 설명하면서 주솟값을 참조 변수에 담는다고 하였는데

우리가 new 연산자를 이용하여 객체를 생성하면 이 객체가 가지고 있는 멤버 변수 등을 저장할 공간이 필요하다. 이때 사용하는 메모리가 힙메모리이다.

힙 메모리를 보려면 스택을 먼저 봐야 한다.

Stack은 기본 자료형(byte, int, double, long 등,,)에 해당하는 지역변수들의 데이터 값이 저장되는 공간이다. ​

어떠한 메소드가 호출이되면 스택 메모리에 공간이 할당이 되고 메서드가 종료되면 메모리가 해제된다.

다음으로 힙 메모리는 new 연산자를 이용하여 객체를 생성하면 인스턴스에 대한 정보가 저장되는 곳이다. 사용이 끝나면 메모리를 해제해 주어야 한다. 자바에서는 garbage collector 가 자동으로 메모리를 해제한다.

인스턴스를 두 개 생성하면 힙영역에 두 개의 인스턴스가 할당된다.

Student studentAhn = new Student();

studentAhn의 변수는 지역변수로 스택 메모리에 형성이 되고, 인스턴스는 힙 메모리에 형성이 된다.

위처럼 대입 연산자를 이용하여 생성된 클래스를 변수에 대입하면, studentAhn이 인스턴스가 저장된 메모리를 가리키게 된다.

스택 메모리
studentAhn

힙 메모리
student 클래스 생성

studentAhn은 지역변수로서 스택 영역에 저장된다.

위의 화살표 표시는 지역변수에 생성된 인스턴스의 힙 메모리의 주소를 대입한다는 의미다.

이렇게 클래스가 생성될 때마다 인스턴스는 다른 메모리 공간을 차지해서

인스턴스의 멤버 변수가 매번 새로 생성된다. 그래서 멤버 변수를 인스턴스 변수라고도 부른다.

 
 
반응형

'java' 카테고리의 다른 글

참조 자료형  (0) 2022.07.10
Java 생성자  (0) 2022.07.10
Java 클래스와 인스턴스  (0) 2022.07.10
Java 메서드  (0) 2022.07.10
자바 클래스 조금 더 살펴보기  (0) 2022.07.10