Main 메서드가 호출되는 과정

  1. JRE는 프로그램에 main 메서드가 있는지 확인해 있으면 실행을 위해 JVM을 부팅한다.
  2. java.lang 패키지를 static 영역에 올린다. (Method Area)
  3. 모든 클래스임포트 패키지를 static 영역에 올린다 (Method Area) + static 변수
  4. main 메서드 Stack 프레임이 stack 영역에 생긴다 ( { 를 만나면)
  5. args 변수 공간이 main 메서드 stack 프레임 안에 생긴다
  6. main 메서드의 끝인 중괄호를 만나면 stack 프레임이 소멸된다. (}를 만나면)
  7. JRE는 JVM 종료하고 JRE 자체도 메모리 상에서 사라진다.

변수와 메모리

서로 다른 메서드 간의 지역 변수를 참조할 수 없는 이유

  1. 메서드는 서로의 고유 공간. 서로 침범하면 무단 침입으로 자바 월드에 문제를 유발 할 수 있기 때문

  2. 포인터의 문제.

  3. 책의 예제에서는 main()에서 square() 메서드를 호출하지만, 실전에서는 사용되는 메서드는 다양한 곳으로부터 호출된다. 이때, 호출하는 메서드 내부의 지역 변수를 호출당하는 쪽에서 제어할 수 있게 코드를 만들려면 결국 포인터를 주고 받아야한다.

    → 스택 프레임의 구조가 항시 변하기 때문에

참고 할 사항