Notice
Recent Posts
Recent Comments
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

DeFacto-Standard IT

[Java] 메모리 영역 3가지 본문

Java/Basic

[Java] 메모리 영역 3가지

defacto standard 2017. 9. 19. 14:48

 - Static 영역

프로그램이 시작될 때 확보, 종료까지 배치가 고정.

static 키워드가 붙은 전역변수 저장



 - Heap 영역

프로그램 실행 시 동적으로 확보하기 위한 영역.

시작 시 일정 영역이 확보되고, 필요한 경우 프로그래머가 어플리케이션에 할당(new 키워드).

GC에 의해 메모리가 관리된다.

new 키워드로 만들어진 실제 객체, 배열 등이 저장된다.



 - Stack 영역

스레드당 하나씩 할당. 서브루틴의 호출 제어를 위해 사용된다.

서브루틴의 인수, 지역변수, 리턴주소가 저장.

Primitive Type의 변수는 실제 값이 저장되며, Reference Type의 변수는 Heap 영역의 주소값이 저장된다.




Book b = new Book();


b는 지역변수, 즉 레퍼런스이고 new Book()에 의해 생성된 객체는 동적으로 생성되었기 때문에 동적으로 생성된 변수에 해당한다.


따라서 지역변수 b의 경우는 Stack영역에 저장되며, new Book() 으로 만들어진 객체는 Heap 영역에 저장된다.


b라는 지역변수(레퍼런스) 자체는 Stack에 저장되어 new Book()에 의해 동적으로 생성된 객체의 주소값을 가지고 있다.

이 주소값은 Heap영역의 주소를 가르키므로 '레퍼런스'라는 단어를 쓰는 것이다.

 

Comments