본문 바로가기

.주제별/Java

Java) 레퍼런스, 객체

1. 스택과 힙 (출처 : 위 KLDP 참고)

     참고 :  KDLP-힙과 스택의 개념은?

               & Smashing The Stack For Fun And Profit

 
/-------------------------/  메모리상에서
|                         |       높은 구역
|         Stack           |
|                         |
/-------------------------/
|                         |
|          Heap           |
|                         |
/-------------------------/
|   Uninitialized data    |
| ---------Data---------- |
|    Initialized data     | 
/-------------------------/
|                         |
|          Text           | 
|                         |  메모리상에서
/-------------------------/       낮은 구역

 

               * Stack

                      함수내 로컬 변수와 같은 자동 변수들이 저장되는 곳.

                      따라서, 함수가 실행되는 동안에만 존재하며, 함수의 실행이 종료되변 그 변수들도 사라짐.

                      변수 이외, saved frame pointer등의 함수를 호출한 caller의 환경 정보도 저장.

                      쉽게, 데이타를 임시로 저장하는 용도이다.

                      (예전 Task간의 Context Switch가 일어나는 경우, Task의 Stack size을 충분히 확보하지 못해서

                       Stack Overflow 일어났던 경험이 있다)

               * Heap

                      동적 메모리 할당을 하는 경우 Heap영역에 할당됨.

 

              * 자바 기준에서 보면....

                       객체가 사는 곳은 "힙", 메소드 호출/ 지역변수 등이 사는 곳은 "Stack"

 

2. 레퍼런스와 객체 (객체 생성)

    참고 : Head Frist in Java

    Dog myDog = new Dog();

 

    * 레퍼런스 변수를 선언함 "Dog myDog"

            JVM에 레퍼런스 변수용 공간을 할당해 달라 요청하고,

            그 변수명을 "myDog"라 지정.

            즉, Dog라는 객체를 다루기 위한 리모콘을 만드는 것과 같다.

    * 객체 생성 "new Dog();"

            JVM을 통해서, Heap에 새로운 Dog객체를 위한 공간을 만들도록 지시.

    * 객체와 레퍼런스 연결 

            "레퍼런스 = 객체"

           

3. 인스턴스(instance) , 인스턴스화(instantiate)

   참고 : 텀즈

 

    * 인스턴스

            인스턴스는 추상화 개념 또는 클래스 객체, 컴퓨터 프로세스등과 같은

             템플릿이 실제 구현된 것을 의미한다.

 

    * 인스턴스화

            인스턴스화는 '클래스' 안의 '객체'에 대한 특정한 변형을 정의하고,

            이름을 붙인 다음, 그것을 물리적으로 어떤 장소에 위치시키는 등의 작업을 통해서,

            인스턴스로 만드는 것을 의미한다.

 

   클래스와 객체의 경우.

   인스턴스화란 , 클래스를 객체로 만드는 행위를 말하고,

   인스턴스는 클래스의 구체적인 형태 - 즉 객체를 의미한다.