자바 프로그램의 실행구조와 JVM
☞ 일반적인 프로그램의 실행구조
하드웨어 > 운영체제 > 프로그램
: 하드웨어를 기반으로 운영체제가 동작하고 그위에서 프로그램이 실행되는 구조이다.
☞ 자바 프로그램의 실행구조
하드웨어 > 운영체제 > 가상머신 > 자바프로그램
일반적인 프로그램실행 구조와 차이점은 운영체제와 자바프로그램 사이의 자바가상머신이 존재한다는 점이다. 운영체제는 자바 가상머신을 실행시키고 자바 가상머신은 자바프로그램을 실행시키는 구조이다.
자바 가상머신도 운영체제 위에서 동작하는 일종의 소프트웨어이다.. 그렇다면 왜? 자바프로그램은 운영체제가 직접 실행을 시키는 구조가 아닌, 자바 가상머신에 의해서 실행되는 구조로 설계된 것인가? 이는 자바프로그램을 운영체제에 상관없이 실행시키기 위함입니다.
Java Program |
< 동일 프로그램 > |
Java Program |
Windows JVM |
< 서로 다른 JVM> |
Linux JVM |
Windows |
<서로 다른 OS> |
Linux |
hardware |
hardware |
JVM(Java Virtual Machine, 자바 가상 머신)
: JVM은 메모리 상에만 존재하는 가상컴퓨터이다. 자바의 소스 코드를 컴파일 하게 되면 바이트코드로 변환되는데 JVM은 이러한 바이트 코드를 읽어서 실행할 수 있도록 해주는 도구이다. 바이트코드를 해석한 JVM은 그 내용을 자신의 각 메모리에 배치시키게 된다.
스택영역(Runtime Stack)
: 바이트 코드를 읽어 이곳에서 자바의 로컬(Local) 변수(Variable)를 할당시킨다. 해당 변수들은 그것이 선언된 블록의 영역을 벗어나는 순간 메모리가 소멸되며 각 공간은 자동으로 초기화 되지 않기 때문에 사용 시에는 반드시 초기화 작업을 하여야 한다.
- 지역변수가 할당되면 메모리가 뒤에서 앞으로 할당, 앞에서 뒤로 소멸된다.
- 자동초기화가 되지않는다.
동적 할당 메모리 영역(Garbage Collection Heap)
: 배열로 만들어진 연속된 공간들이나 클래스에 포함된 멤버를 할당하는 영역으로 Garbage 컬렉터에 의해 관리된다.
모든 영역은 초기화가 디폴트(Default)로 되기 때문에 특별한 초기화 과정 없이도 사용할 수 있다.
상수 메소드 영역
: 고정 데이터를 가진 상수나 추상화 형식을 지닌 메서드(Method)의 경우 해당 내용을 기억해 두어야 할 필요성 때문에 만들어진 영역으로 실행 시에 위치 값을 가지게 된다. 따라서 그 위치가 조건에 의해 결정되는 것이 아니므로 외부에서 쉽게 경로를 파악할 수 없어 해킹으로부터 안정적이다.
- 프로그램 시작시 할당되면 종료시 소멸
Register 영역(Process Register)
JVM이 실행하면서 필요한 부분의 주소를 기억해 두는 곳으로 각 영역에 연결되어 프로세서가 작동할 때 여기에 등록된 내용을 기초로 실행된다.
2020/11/11 - [개발/자바] - JAVA 기초1 - 객체지향 특징 및 기본데이터 타입
'개발 > 자바' 카테고리의 다른 글
JAVA 기초5 - Stack 메모리의 영역 (0) | 2020.11.14 |
---|---|
JAVA 기초4 - 스태틱(static) (0) | 2020.11.14 |
JAVA 기초3 - 접근제어 (0) | 2020.11.11 |
JAVA 기초1 - 객체지향 특징 및 기본데이터 타입 (0) | 2020.11.11 |