[개발도서 정리] - 2장 자바와 절차적/구조적 프로그래밍

자바는 객체 지향 언어이면서 더 근본적으로는 프로그래밍 언어다.

  • JDK(Java Development Kit)
    - 자바 개발 도구
  • JRE(Java Runtime Environment)
    - 자바 실행 환경
  • JVM(Java Virtual Machine)
    - 자바 가상 기계

객체 지향 프로그램에서 메모리 사용 방식

  • 코드 실행 영역
  • 데이터 저장 영역
    - Static 영역
    • Stack 영역
    • Heap 영역
public Class Test {
	public static void main(String[] args) {
    	System.out.println("Test");
    }
}
  1. JRE에서 프로그램의 main() 메서드 존재 확인
  2. JRE가 JVM을 동작 시킴
  3. 동작한 JVM은 목적 파일을 받아 목적 파일을 실행
  4. JVM은 java.lang 패키지(모든 자바 프로그램이 반드시 포함하게 됨)를 static 영역에 놓음
  5. JVM은 개발자가 작성한 모든 클래스import 패키지를 static 영역에 가져다 놓음
  6. 위 코드의 2번째 줄 실행 시 main() 메서드의 스택 프레임을 stack 영역에 할당
    • 스택 프레임은 여는 중괄호를 만날 때마다 생성(클래스를 정의하는 중괄호는 제외)
  7. 메서드의 인자를 저장할 변수의 공간을 스택 프레임 맨 아래 할당
  8. sout 실행
  9. 닫는 중괄호를 만나면 스택 프레임 소멸
  • 지역 변수도 스택 영역에 생김 (스택 프레임이 사라지면 같이 사라짐)
  • 클래스 멤버 변수는 Static 영역에 생김(자리를 잡고 나면 JVM이 종료될 때까지 그대로 있음) JAVA 8 버전 부터는 Heap 영역
  • 객체의 멤버 변수는 Heap 영역에 생김 GC가 발생하면 소멸된 객체의 멤버 변수는 사라짐

좋은 웹페이지 즐겨찾기