.class
바이트 코드로 만들면 이 코드를 실행해 각 OS에 맞는 실행파일로 바꿔줌Class Loader Subsystem
.class
에서 바이트 코드를 읽고 데이터를 Method Area
에 저장Heap
영역에 저장Verify
, Prepare
, Resolve(Option)
세 단계.class
파일 형식 유효한지 체크static
변수 값 할당. 붙은 친구들 초기화. (static block
실행)메모리
메소드 영역(Method Area) == 클래스영역, static영역
Heap - 객체 저장
Stack - 스레드마다 런타임 스택을 만들고 스택프레임이라 불리는 블록을 쌓음
public class Main {
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
int sum = add(num1, num2);
System.out.println(num1 + " + " + num2 + " = " + sum);
}
public static int add(int n1, int n2) {
int result = n1 + n2;
return result;
}
}
main()
함수가 사용할 메모리 공간이 스택에 생성main()
에서 add()
호출add()
함수가 사용할 메모리 공간이 스택에 생성add()
함수 수행이 끝나면 항당했던 메모리 공간 해제. 자동으로 사라짐메모리 사용 방식
실행엔진
JNI(Java Native Interface), Native Method Library
native
키워드가 붙어있음스파르타코딩클럽 자바심화 강의
[1주차] JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가.
박은종, 『Do it! 자바 프로그래밍 입문』, 이지퍼블리싱(주), 2018