on
[백기선] 1주차 과제: JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가
[백기선] 1주차 과제: JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가
PC Register 프로그램의 실행은 CPU에서 명렁어, 즉 Instruction을 수행하는 과정으로 이루어진다. CPU는 이러한 Instruction을 수행하는 동안 필요한 정보를 레지스터라고 하는 CPU내의 기억장치를 사용한다. Java의 PC Register는 CPU내의 기억장치인 레지스터와는 다르게 작동한다. Register - Base가 아닌 Stack - Base로 동작한다. PC Register는 각 Thread 별로 하나 씩 존재하며 현재 수행 중인 Java Virtual Machine Instruction의 주소를 가지게 된다. 만일 Nativa Method를 수행 한다면 PC Register는 Undefined 상태가 된다. 이 PC Register에 저장되는 Instruction의 주소는 Native Pointer 일 수도 있고 Method Bytecode일 수도 있다. Native Method를 수행할 때에는 JVM을 거치지 않고 API를 통해 바로 수행하게 된다. 이는 Java Platform에 종속 받지 않는다는 것을 보여준다
Java Virtual Machine Stack Java virtual Machine Stacks은 Thread의 수행 정보를 Frame을 통해서 저장하게 된다. Java Virtual Machine Stacks는 Thread가 시작될 때 생성되며, 각 Thread별로 생성이 되기 때문에 다른 Thread는 접근할 수 없다.
Method가 호출 되면 Method와 Method 정보는 Stack에 쌓이게 되며 Method 호출이 종료 될 때 Stack point에서 제거 된다. Method 정보는 해당 Method의 매개변수, 지역변수, 임시변수 그리고 어드레스(메소드 호출 한 주소)등을 저장하고 Method 종료시 메모리 공간이 사라진다.
Native Method Stack Java외의 언어로 작성된 네이티브 코드들을 위한 Stack, 즉 JNI(Java Native Interface)를 통해 호출 되는 C/C++ 등의 코드를 수행하기 위한 Stack
Native Method를 위해 Native Method Stack이라는 메모리 공간을 갖는다. Application에서 Native Method를 호출하게 되면 Native Method Stack에 새로운 Stack Frame을 생성하여 Push 한다. 이는 JNI를 이용하여 JVM 내부에 영향을 주지 않기 위함이다.
Method Area 모든 쓰레드가 공유하는 메모리 영역이다. Method Area는 클래스, 인터페이스, 메소드, 필드, Static 변수 등의 바이트 코드 등을 보관
from http://maximum-curry30.tistory.com/284 by ccl(A) rewrite - 2021-10-03 12:01:12