(자바기초동영상,자바교육,자바강의,자바강좌)JVM 실행 데이터 영역 (JVM Runtime Data Area), 메소드영역,힙,스택, JAVA강의동영상
(자바기초동영상,자바교육)JVM 실행 데이터 영역 (JVM Runtime Data Area), 메소드영역,힙,스택, JAVA강의동영상
JVM이 운영되면서 운영체제로 부터 부여 받은 메모리 영역
메소드 영역(Method Area) : 모든 쓰레드가 공유하는 영역이며 JVM이 시작될 때 생성된다. 클래스와 인터페이스의 메소드에 대한 바이트코드, 전역변수(클래스 변수), 런타임 상수 풀이 위치한다. 오라클의 Hot Spot VM에서는 Permanent Area, Permanent Generation(PermGen)이라고 부른다.
힙(heap) 영역 : 객체를 저장할 때 사용하는 메모리 영역이며 성능을 생각할 때 가장 많이 고려되는 부분이다.
JVM 스택(JVM Stack)
때 마다 할당되는 스택 프레임(Stack Frame)이라는각 쓰레드 마다 하나씩 존재하고 메소드가 실행될 구조체를 저장한다.
JVM은 오직 JVM 스택에 메소드에 대한 스택 프레임을 추가하고 제거하는 동작만 실행한다.
자바에서 예외 발생 시 printStackTrace() 등의 메서드로 보여주는 Stack Trace의 각 라인은 하나의 스택 프레임을 표현한다.
실행되는 메소드의 스택 프레임을 가지는데 각 스택 프레임에는 지역변수, 메소드의 인자, 메소드의 리턴값, 리턴 번지 등이 저장되고 스택 프레임은 메소드가 끝나면 사라진다.
PC 레지스터(Program Counter Register)
쓰레드가 시작될 때 생성되며 쓰레드 마다 하나씩 존재하여 실행 할 JVM의 명령어의 주소를 가리킨다.
실행 상수 풀(Runtime Constant Pool) : 메소드 영역으로 부터 할당 받으며 클래스와 인터페이스의 상수, 메서드, 필드에 대한 모든 레퍼런스를 저장하는 영역이다. 자바 프로그램에서 어떤 메서드나 필드를 참조할 때 JVM은 런타임 상수 풀을 통해 해당 메서드나 필드의 실제 메모리상 주소를 찾아서 참조하게 된다.
네이티브 메소드 스택(Native Mathod Stack) : 자바이외의 언어로 작성된 네이티브 코드를 위한 스택, JNI(Java Native Interface)를 통해 호출하는 C/C++ 등의 코드를 수행하기 위한 스택이다.
메소드 내에서 객체 참조 형으로 선언된 변수인 경우 지역변수로서 스택에 위치하며 힙에 저장되어 있는 객체에 대한 참조 값을 가지게 된다.
객체 참조 형 변수의 값이 null 이라는 의미는 아무것도 참조하고 있지 않다는 의미이다.
new 연산자는 힙(heap) 메모리에 객체를 만들고 그 객체의 참조값을 반환한다.
객체 참조 변수의 경우 대입, 메소드 호출시의 인자, 반환형 등으로 사용 될 때 참조 값만 전달 될 뿐, 객체 자체가 복제되어 전달되는 것은 아니다.
#자바, #자바메모리, #JVM메모리, #자바힙, #메소드영역, #자바객체란, #객체란, #자바동영상, #자바동영상강의, #자바강의, #자바강좌, #JAVA, #JAVA동영상, #JAVA강의, #JAVA강좌, #자바교육, #JAVA교육, #자바인터프리터, #자바컴파일, #자바실행, #자바소스
댓글 없음:
댓글 쓰기