자바의 런타임 데이터 영역들과 공유 데이터

-PC레지스터 영역

현재 스레드가 수행하고 있는 코드의 명령과 주소들을 저장한다.

-JVM 스택 영역

지역 변수, 파라미터, 리턴 값과 지역 객체 레퍼런스를 저장한다.

-힙 영역

생성된 객체(Array도 객체임)들을 저장한다. 모든 스레드에 의해서 공유된다.

-메소드 영역

각 클래스 또는 인터페이스의 런타임 컨스턴트 풀 영역, 메소드, 생성자를 저장한다. 모든 스레드에 의해서 공유된다.

-런타임 컨스턴트  풀 영역

각 클래스 또는 인터페이스 클래스 변수, static 변수, 클래스 객체 레퍼런스를 저장한다.

-네이티브 메소드 스택 영역

일명 C 스택으로 불린다. JNI의 네이티브 메소드 호출 시 사용되는 스택 영역이다.

JVM의 모든 스레드들에 공유되는 영역은 힙과 메소드 영역, 그리고 런타임 컨스턴트 풀 영역이다. 따라서 멀티스레드 애플리케이션을 작성할 때에는 힙, 메소드, 런타임 컨스턴트 풀 영역에 저장되는 데이터의 공유 문제에 상당한 주의를 기울여야 한다.

Comment are closed.