메서드 영역 : 프로그램을 실행하는데 필요한 공통 데이터를 관리한다. 프로그램의 모든 영역에서 공유한다.
클래스 정보: 클래스의 실행 코드, 필드, 메서드와 생성자 코드 등 모든 실행 코드가 존재한다.
static 영역: static 변수들을 보관한다.
런타임 상수 풀: 프로그램을 실행하는데 필요한 공통 리터럴 상수를 보관한다. 이 외에도 프로그램을 효율적으로 관리하기 위한 상수들을 관리한다.
스택 영역 : 자바 실행 시, 하나의 실행 스택이 생성된다. 각 스택 프레임은 지역 변수, 중간 연산 결과, 메서드 호출 정보 등을 포함한다.
스택 영역은 각 쓰레드별로 하나씩 생성하여 사용한다.
힙 영역 : 객체 인스턴스와 배열이 생성되는 영역이다. 가비지 컬렉션의 주요 대상 영역이며, 더이상 참조되지 않는 객체는 GC에 의해 제거된다.
인스턴스에서 메서드를 호출하면?
인스턴스에서 메서드를 호출한다.
heap 영역에는 메서드 정보가 존재하지 않으므로, 인스턴스가 메서드 영역에 해당 메서드를 요청한다.
메서드 영역에서 코드를 가져와 실행한다.
static
메서드 영역에 저장되며, 변수나 메서드에 static을 설정할 수 있다.
static 변수나 메서드는 접근 제어자만 허락한다면 어디서든 접근할 수 있다.
static 메서드 내에서는 static 변수나 메서드만 사용할 수 있다.
static import
static 변수나 메서드는 [클래스명].[변수명 or 메서드명] 을 사용하게 되는데, 매번 클래스명을 적어주어야하는 불편함이 있다.
static import를 사용하면 static 메서드와 변수를 가져와 클래스명 없이 사용하여 코드를 간결하게 작성할 수 있다.