1. JDK (Java Development Kit)
- 자바 애플리케이션 개발을 위한 도구 모음
- 구성
- 컴파일러(Java c)
- JRE(Java Runtime Environment, 자바 실행 환경)
- 라이브러리
- JVM(Java Virtual Machine)
자바 실행만 할 경우 JRE만 있어도 됩니다.
2. java 파일 실행 흐름
- 개발자는 IDE에서 개발자가 이해 가능한 언어로 코드를 작성해서 java 파일을 만듭니다.
- HDD에서 java 파일을 메모리로 로드합니다.
- 컴파일러가 java파일을 읽고 바이트코드로 컴파일하고 class 파일로 저장합니다.
- JVM이 class파일을 읽고 메모리(RAM)에 영역을 할당(assign)합니다.
- 코드가 순차적으로 실행됩니다.
3. 메모리에 할당되는 영역의 종류
Static 메모리
- 프로그램이 시작될 때 메모리에 로드
- 프로그램이 종료될 때 메모리에서 삭제
- 가장 긴 생명 주기→ 프로그램 전역에 공유
- static이 변수 선언에 사용되는 경우 변수는 Static메모리에 저장
Heap 메모리
- 동적 데이터(동적으로 할당된 객체, 배열) 등이 저장
- new 로 새 인스턴스를 생성 시 객체의 정보를 Heap메모리에 저장
Stack 메모리
- 함수 호출과 관련된 지역 변수와 매개변수 등이 저장
4. 소스 코드 예시

- Static 영역에 저장되는 정보
- num2 = 2 (line 4)
- main 메서드 (line 12)
- Heap 영역에 저장되는 정보
- line 15가 실행되면서 JVMTest 객체 내용이 할당된 주소에 저장
- num1 =1 (line 3)
- method1 (line 6)
- Stack 영역에 저장되는 정보
- line 15가 실행되면서 참조 변수 jt가 참조하는 heap메모리의 주소 정보가 main stack에 저장됩니다.
- line 17이 실행되면서 method1에 대한 정보가 method1 stack에 저장됩니다.
- 매개변수 num3 = 3
- num4 = 4
- jt.method1(3); 이 실행
- main stack에 저장된 method1의 heap메모리의 주소 정보를 확인
- 해당 주소의 heap 메모리로 찾아가서 method1의 정보를 가져와서 실행
→ 2번의 과정이 필요
- 코드의 마지막 줄이 실행된 후
- method1 스택 삭제
- main 스택 삭제
- static 메모리 삭제
- 프로그램 종료
Share article