주특기 입문 첫째날이 되었다.
난생 처음 스프링을 접해보는데, 정말 내가 이걸 '할 수 있을까?' 싶었던 하루였다. DI에 IoC...등 읽어도 읽어도 이해안가는 개념이 많아서 어지러운 감정이랄까...
그래도 오전에 주특기 Spring세션으로 JVM T 메모리 구조를 배울 수 있는 시간이 있었는데, 설명이 너무 좋았고 내용이 자바를 이해하는데 꽤 도움이 되었던 것 같다.
그래서 오늘은 이 내용을 다시 복습하는 차원에서 나만의 언어와 그림으로 정리해보려고 한다.
👉 T 메모리 구조
데이터 저장 영역을 스태틱(메소드), 스택, 힙 영역으로 분리하여 T 메모리 구조라고 지칭한다.
메인 메소드가 중요한 이유 = '진입점'
✔ JVM 전처리 과정?
가장 먼저 모든 자바 프로그램이 반드시 포함하는 java.lang 패키지, import 된 패키지, 프로그램상의 모든 클래스를 스태틱(메소드) 영역에 배치하는 과정을 의미한다.
메인 메소드가 실행되면 스택 프레임이 스택 영역에 할당된다. 그리고 스택 프레임 내부에는 메인 메소드에 선언된 변수에 대한 공간을 할당해준다. 가장 기본적인 메인 메소드라면, 메인 메소드의 인자 - args를 저장할 변수 공간을 스택 프레임의 가장 밑에 확보된다.
메인 메소드의 모든 코드가 실행이 되었다면, 스택 프레임은 소멸된다. 메인 메소드가 끝나게 되면 JRE는 JVM을 종료하고 JRE자체도 운영체제 상의 메모리에서 사라진다.
java.lang, import된 패키지, 사용하는 클래스가 배치되는 영역이다.
스택 프레임이 생성되는 영역이다.
✔ 스택 프레임
스택 프레임은 여는 중괄호로 생성되며 닫는 중괄호로 소멸된다.
객체가 배치되는 공간이다.(힙은 대용량 자료를 저장할 수 있도록 메모리를 사용하는 자료구조이다.)
정말 어제까지만 해도 스프링의 스자도 모르던 내가 스프링을 하려니 너무 막막한 감정이 든다. 뭐부터 해야할지도 모르겠고, 일단 서블릿이나 그리들처럼 몰랐던 개념을 하나 하나 공부하고 있는데 이게 맞는 방향인지 싶은 기분도 든다. 시간은 없으니 조금 조급한 기분이 드는데, 그래도 차분한 마음을 갖자. 그리고 하나씩 단계를 밟아가며 성장하는 내가 되자.
이번주는 자바를 좀 더 완벽히 해보자. 스프링은 탄탄한 자바가 중요하다!!!