public class Start5 {
static int share;
public static void main(String[] args) {
share = 55;
int k = fun(5, 7);
System.out.println(share);
}
private static int fun(int m, int p) {
share = m + p;
return m - p;
}
}
JRE의 동작:
main()
메서드가 있는지 확인한다.
main()
메서드를 발견한다.main()
메서드의 존재가 확인되면 JVM에 전원을 넣어 부팅한다.JVM의 동작 :
JRE에게 목적 파일을 전달받아 실행한다.
전처리를 한다.
목적 파일 내에 있는 모든 Class와 import package를 스태틱 영역에 배치한다.
main()
메서드는 여는 중괄호 {
를 만나서 스택 프레임이 만들어진 후, share = 55;
를 실행한다.
int k = fun(5, 7);
를 실행하면서 fun()
메서드의 스택 프레임이 만들어지고, 인자값들과 반환값을 저장할 변수 공간도 생긴다.
share = m + p;
를 실행한다.
return m - p;
를 실행한다.
fun()
스택 프레임의 닫는 중괄호 }
를 만나서 fun()
메서드의 스택 프레임을 소멸 시킨다.
main()
메서드의 닫는 중괄호 }
를 만나서 main()
스택 프레임을 소멸 시킨다.
JRE는 JVM을 종료하고 JRE 자체도 운영체제 상의 메모리에서 사라진다.