티스토리 뷰

자바는 기본적으로 한 번 개발된 코드를 활용하여 OS와 상관없이 실행할 수 있다. Platform independent 하다고 하며 이는 JVM(Java Virtual Machine) 위에서 동작하도록 만들어졌기 때문에 가능하다. 

그래서 Java의 기본적이 동작원리에 대해서 간단하게 확인해보고자 한다. 


위에 이야기 했듯이 자바 언어는 JVM 위에서 동작하도록 되어 있는데, JVM 은 모든 OS 에서 동작할 수 있다. 따라서 개발된 코드는 JVM 에서 실행할 수 있는 코드로 변환되면 된다. 

 개발자는 .java 파일을 만들어서 실행하고자 하는 기능을 작성한다. 이렇게 작성된 프로그래밍 코드는 자바 컴파일러를 통해 바이트코드화 되어 .class 파일을 생성한다. 이 .class 파일이 바로 JVM에서 인식할 수 있는  바이너리 파일이다. 


JVM 은 아래와 같은 구조를 가진다.

Class Loader : class 파일을 메모리(Runtime Data Area)에 적재한다.

- Bootstrap 클래스로더 : JRE의 클래스들

- Extension 클래스로더 : JRE의 확장 라이브러리

- System 클래스로더 : 시스템환경변수의 클래스패스

Execution Engine : byte code 를 실행 가능하게 해석해주는 역할

Runtime Data Area : 프로그램을 수행하기 위해 OS에서 할당 받은 메모리 공간


JVM 의 Runtime Data Area

1. Method Area

- Class Area, Code Area, Static Area 와 동일한 의미

- 클래스와 인터페이스에 대한 런타임 상수 풀,  멤버 변수(필드), 클래스 변수(Static 변수), 생성자와 메소르를 저장한다.

- class 파일의 바이트 코드가 로드되는 곳.

- 2개의 주요 공간으로 분리된다.

: Permanent Generation - 클래스 정의, 구조, 메소드, 필드, 메소드 및 상수로부터 클래스 관련 데이터 저장

: Code Cache - 캐시 영역은 컴파일 된 코드를 저장하는데 사용

2. Stack

- LIFO(Last in first out)

- 메소드 호출 시마다 각각의 스택프레임(메소드 전용 공간)이 생성됨

- 메소드 안에서 사용되는 값을 저장한다. 호출된 메소드의 매개변수, 지역변수 리턴 값 및 연산 시 일어나는 값들을 저장

- 메소드가 종료되면 메모리를 해제시킴

3. Heap

- new 연산자로 생성된 객체와 배열을 저장하는 공간

- Garbage Collector를 통해 메모리를 반환

- Permanent Generation : 생성된 객체들의 정보와 주소 값이 저장

- New Area

: Eden - 객체들이 최초로 생성되는 공간

: Survivor - Eden에서 참조되는 객체들이 저장되는 공간

- Old Area : New Area 에서 일정시간 이상 참조되고 있는 객체들이 저장되는 공간

- 모든 스레드는 Heap 영역을 공유함.

4. Native Method

- JNI(Java Native Interface)를 통해 호출되는 c/c++ 등의 코드를 수행하기 위한 스택

- 네이티브 메소드의 매개변수, 지역변수 등을 바이트 코드로 저장

- 자바 외의 다른 언어에서 제공되는 메소드들이 저장되는 공간

'study > java' 카테고리의 다른 글

Effective JAVA 2장 객체 생성과 파괴 - 아이템 #1  (0) 2019.08.19
자바  (1) 2018.06.01
[JAVA] Object Oriented Programming - 객체지향프로그래밍  (0) 2018.05.05
[JAVA] Primitive type & Reference type  (0) 2018.05.05
Java 기본  (0) 2018.04.25
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함