Java/Java 이론

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

2주녘 2023. 7. 28. 16:28
반응형
인스턴스(instance)
  • 클래스는 객체의 속성을 정의하고, 기능을 구현하여 만들어 놓은 코드 상태(설계도면)이다.
  • 실제 클래스 기반으로 생성된 객체(인스턴스)는 각각 다른 멤버 변수 값을 가지게 됩니다.
  • 가령, 학생의 클래스에서 생성된 각각의 인스턴스는 각각 다른 이름, 학번, 학년등의 값을 가지게 됩니다.
  • new 키워드를 사용하여 인스턴스를 생성합니다.
힙 메모리
  • 생성된 인스턴스는 동적 메모리(heap memory)에 할당됩니다.
  • C나 C++ 언어에서는 사용한 동적 메모리를 프로그래머가 해제시켜야 합니다.
  • Java에서 Gabage Collector가 주기적으로 사용하지 않는 메모리를 수거합니다.
  • 하나의 클래스로부터 여러개의 인스턴스가 생성되고 각각 다른 메모리 주소를 가지게 됩니다.

스택과 힙의 차이점

메모리의 스택 영역은 함수의 호출과 관계되는 지역변수와 매개변수가 저장되는 공간입니다.

스택영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸합니다.

스택영역은 푸시(push) 동작으로 데이터를 저장, 팝(pop) 동작으로 데이터를 꺼냅니다.

이러한 스택은 후입선출 (LIFO, Last-In First-Out) 방식에 따라 동작하며, 가장 늦게 저장된 데이터가 가장 먼저 나오게 됩니다.

1) 매우 빠른 액세스

2) 변수를 명시적으로 할당 해제 할 필요 X

3) 공간은 CPU에 의해 효율적으로 관리, 메모리는 단편화되지 X

4) 지역변수만

5) 변수의 크기를 조정할 수 X

 

메모리의 힙(heap) 영역은 사용자가 직접 관리할 수 있는 메모리 영역입니다.

힙 영역은 사용자에 의해 메모리 공간이 동적으로 할당되고 해제됩니다.

1) 전역 적으로 액세스 할 수 X

2) 메모리 크기 제한 X

3) (상대적으로) 느린 액세스

4) Java new 명령어

 

용어정리

● 객체 : 객체 지향 프로그램의 대상, 생성된 인스턴스
● 클래스 : 객체를 프로그래밍 하기위해 코드로 정의해 놓은 상태
● 인스턴스 : new 키워드를 사용하여 클래스를 메모리에 생성한 상태
● 멤버 변수 : 클래스의 속성, 상태, 특성
● 메서드 : 멤버 변수를 이용하여 클래스의 기능을 구현한 함수
● 참조 변수 : 메모리에 생성된 인스턴스를 가리키는 변수
● 참조 값 : 생성된 인스턴스의 메모리 주소 값

반응형