자바 기초 - 개발 환경

Java의 특징

1. 운영 체제에 독립적

2. 객체 지향 언어

3. 자동 메모리 관리 w.Garbage Collection

4. 네트워크와 분산처리 지원

5. 멀티쓰레드 지원

6. 동적 로딩(Dynamaic Loading) 지원


JDK와 JRE


컴파일과 실행

class Hello {
  public static void main(String[] args) {
    System.out.println("Hello, World");
  }
}

20210803-011635

컴파일

실행


JVM의 구성 요소

클래스 로더 Class Loader

Runtime Data Area

JVM이 프로그램을 수행하기 위해 OS로부터 별도로 할당받은 메모리 공간

  1. Method 영역: 스레드 간 공유, 클래스 레벨(클래스명, 부모 클래스명 인터페이스, 메소드, 필드, static 변수 등)의 정보 저장
  2. Heap 영역: 스레드 간 공유, GC의 대상, 클래스를 통해 인스턴스를 생성하면 힙에 저장됨, (객체, 배열 저장)
  3. JVM Stack 영역: 스레드 마다 생성, 메서드에 관련된 정보가 스택 프레임의 형태로 저장, 메서드 호출이 정상 완료 or 예외 던져지면 스택 프레임은 스택에서 빠지면서 소멸
  4. PC Register: 스레드 마다 생성, 자바 메서드에 대한 위치만 기록, 연산을 위해 필요한 피연산자를 임시로 저장
  5. Native Method Stack: 스레드 마다 생성, native로 작성된 메서드 정보 저장

Exection Engine

1. Interpreter

2. JIT Compiler

3. Garbage Collecter