SPRING(3) - 변수의 메모리상 위치
이 페이지는 오로지 하나의 내용을 다뤄볼까 한다. 이유는 별거없다.
그냥 본인이 잘못알고 있던 개념에대해 정리하기위해 강조를 주기 위함이다.
앞서 살펴본 메모리영역에서 변수의 위치는 어떠할까?
정답은 3군데 모두이다.
지역변수는 스택 영역에서 일생을 보낸다. 스택 프레임이 사라지면 함께 사라진다.
메소드에 포함된 변수의 일생이다.
클래스 멤버 변수는 스태틱 영역에서 일생을 보낸다. 스태틱 영역에 한번 자리잡으면 jvm이 종료될 때까지 고정된 ( static ) 상태로 그 자리를 지킨다.
객체 멤버 변수는 힙에서 일생을 보낸다. 객체 멤버 변수들은 객체와 함께 가비지 컬렉터라고 하는 힙 메모리 회수기에 의해 일생을 마치게 된다.
지역변수는 흔히 main 메소드의 변수를 생각하면 된다.
클래스 멤버 변수는 static으로 지정한 변수들을 생각하면 된다.
객체 멤버 변수는 따로 클래스를 만들어 객체를 생성한 것들을 가리키는 것 같다. 이에 대한 내용은 객체에 대한 이해를좀 더 증진시켜야 정확히 규정할 수 있을 것 같다.
스택영역의 변수는 메소드에의해 생성되고 그 단위가 메소드이기때문에,
메소드를 벗어나면 존재하지 않는다.
메인 메소드 안의 개발자가 생성한 스택프레임이 생성한 변수도 개발자가 생성한 스택프레임이 종료되면 주기가 끝난다.
그림이 정확하게 표현하기 좋을 것 같다.
이러한 구조이다.
코딩을 하면서 변수의 활용을 주먹구구식으로 익혔다면 이에대한 논리적인 접근을 하는 과정인 것 같다.
이를 확장시켜, 메인메소드를 벗어나 다른 메소드를 만들었을때도 동일하다.