현실 세계 | 가상 세계 | |
JDK(Java Development Kit) - 자바 개발 도구 | 소프트웨어 개발 도구 | JVM용 소프트웨어 개발 도구 |
JRE(Java Runtime Enviroment) - 자바 실행 환경 | 운영체제 | JVM용 OS |
JVM(java Virtual Machine) - 자바 가상 기계 | 하드웨어 | 가상의 컴퓨터 |
JDK를 이용하여 프로그램 개발 -> JRE에 의해 JVM 상에서 동작
코드 실행 영역 | 스태틱(Static)영역 - 클래스 | |
스택(Stack)영역 - 메서드 | 힙(Heap)영역 - 객체 |
데이터 저장 영역을 세 개의 영역으로 분할 - 스태틱, 스택, 힙
const 사용 X -> final 대체
JRE는 JVM 부팅 -> JVM은 메모리 구조 만들기
이때, "Hello 명재" 구문은 메모리 변화가 없다. Why? -> 코드 실행 공간이 별도로 존재하기 때문이다.
main() 메소드의 끝을 나타내는 닫는 중괄호와 만나면 스택 프레임이 소멸된다. -> JRE는 JVM 종료, JRE 운영체제 메모리 사라짐
그러면 이때 메모리 영역은 어떻게 될까?
main 스택 프레임에
변수 a,b의 메모리가 추가된다.
이러면 main스택 프레임 안에 if 스택 프레임이 추가로 생긴다.
이러면 스태틱 영역에서 Start안에 main(args: String[])만 존재하던 것에서 추가로 Plus(k: int)가 추가된다.