본문 바로가기

Java

스택과 힙

책에서 본 내용인데..

자꾸 까먹는다. 기본적인 내용만 들어있어서 어렵지 않은 내용인데..

왜 자꾸 까먹지 -_-;

자바를 쓸 때 우리가 관심을 가져야 할 두가지 메모리 공간을 다루는데.. 힙과 스택이 있다.

하나는 객체가 존재하는 곳이고 (힙)

하나는 메소드 호출과 지역변수가 있는 곳 (스택)이다..


인스턴스 변수는 객체 안에 존재하지만 (물론 레퍼런스만 가지고 있다..)

메서드안에서 선언한 지역 변수는 (매개 변수 포함) 메소드가 스택에

있는 동안만 존재한다.

메소드를 호출하면 그 메소드는 호출 스택에 차례대로 쌓이는데

거기에 지역 변수를 포함한 메소드의 상태가 들어있다.


만약 선언된 지역변수가 객체 레퍼런스 변수라면

스택에는 변수(레퍼런스를 참조하고 있는)만 존재하고

실제 그 변수가 참조하고 있는 객체는 힙에 존재하게 된다..

아무튼 모든 객체는 힙에 저장된다.