2021년 11월 19일 금요일

(자바기초동영상,자바교육)JVM 실행 데이터 영역 (JVM Runtime Data Area), 메소드영역,힙,스택, JAVA강의동영상

 (자바기초동영상,자바교육)JVM 실행 데이터 영역 (JVM Runtime Data Area), 메소드영역,힙,스택, JAVA강의동영상


https://youtu.be/MOWjp9UUL54


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교육, #자바인터프리터, #자바컴파일, #자바실행, #자바소스  


댓글 없음:

댓글 쓰기

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...