Java Virtual Machine(JVM, 자바 가상 머신)은 메모리 상에만 존재하는 가상 컴퓨터.
자바의 소스 코드를 컴파일하면 Byte Code로 변환, JVM은 이러한 바이트 코드를 읽어서 실행할 수 있도록 해주는 도구. 바이트 코드를 해석한 JVM은 그 내용을 자신의 각 메모리에 배치.
ⓐ스택 영역(Runtime Stack)
바이트 코드를 읽어 이곳에서 자바의 Local 변수를 할당. 해당 변수들은 그 것이 선언된 블록의 영역을 벗어나는 순간 메모리가 소멸되며 각 공간은 자동으로 초기화 되지 않기 때문에 사용시에는 반드시 초기화 작업을 해주어야 함.
ⓑ동적 할당 메모리 영역(Garbage Collection Heap)
배열로 만들어진 연속된 공간들이나 클래스에 포함된 멤버를 할당하는 영역으로 Garbage컬렉터에 의해 관리. 모든 영역은 초기화가 Default로 되기 때문에 특별한 초기화 과정 없이도 사용 가능.
ⓒ 상수와 메서드 영역(Constant & Code Segment)
고정 데이터를 가진 상수나 추상화 형식을 지닌 Method의 경우 해당 내용을 기억해 두어야 할 필요성 때문에 만들어진 영역. 실행시에 위치 값을 가지게 됨. 따라서 그 위치가 조건에 의해 결정되는 것이 아니므로 외부에서 쉽게 경로를 파악 할수 없으므로 해킹으로 부터 안정적.
ⓓRegister 영역(Process Register)
JVM이 실행하면서 필요한 부분의 주소를 기억해 두는 곳으로 각 영역에 연결되서 프로세서가 작동할 때 여기에 등록된 내용을 기초로 실행.