728x90
자바 가상 머신 Java Virtual Machine
일반 프로그램은 '운영체제'가 프로그램을 실행시킨다.
반면, JVM은 운영체제로부터 할당받은 메모리 공간을 기반으로 자바 프로그램(=클래스 파일)을 실행한다.
즉, 자바 프로그램의 클래스 파일은 운영체제에서 직접 동작하는 것이 아니라 자바 가상머신(JVM) 위에서 동작한다.
장점 | 단점 | |
Java 프로그램 | JVM에 의해서 실행되는 개념이기 때문에 운영체제에 관계 없이 동일한 결과를 갖는다. = 플랫폼 독립성, 이식성이 높다 |
실행 속도가 느려질 수 있다. |
왜 JVM 구조와 메모리 개념을 알아야 할까?
메모리를 효율적으로 사용하고 보다 안정적인 프로그램을 개발하려면 메모리 구조와 작동 원리를 이해하고 적절하게 사용할 수 있어야 한다.
JVM의 메모리 모델
메모리 공간 활용의 효율성을 높이기 위해 메모리 공간을 세 개의 영역으로 구분하였다.
1) 메서드 영역 (Method Area) : 메서드의 바이트 코드, static 변수
- 이 영역에 저장된 내용은 프로그램 시작 전에 로드되고 프로그램 종료 시 소멸 된다.
- Class 정보, 전역변수 정보, static 변수 정보가 저장되는 공간이다.
- 모든 스레드에서 정보가 공유된다.
2) 스택 영역 (Stack Area) : 지역변수, 매개변수
- 지역변수, 메소드의 매개변수와 같이 프로그램이 실행되는 도중에 임시로 할당되었다가 바로 이어 소멸되는 특징이 있는 변수가 할당된다.
- 이 영역에 저장된 변수는 해당 변수가 선언된 메서드 종료 시 소멸된다.
- 할당 및 소멸의 특성상 그 형태가 장작을 쌓는 것과 유사해서 '스택' 이라고 이름지어졌다.
- 스레드마다 하나씩 존재한다. 즉, 메서드 별 스택이 구분 된다!
3) 힙 영역 (Heap Area) : 인스턴스(객체)
- new 연산자로 생성된 객체, Array와 같은 동적으로 생성된 데이터가 저장되는 공간
- JVM에 의한 메모리 공간의 정리(Garbage Collector) 가 이뤄지는 공간. (할당은 프로그래머가, 소멸은 JVM이 처리)
- 참조변수에 의한 참조가 전혀 이루지지 않은 인스턴스가 소멸의 대상이 된다.
- >> 참고 관계가 끊어진 인스턴스는 접근이 불가. 따라서 가비지 컬렉션의 대상이 된다.
- Reference Type 의 데이터가 저장되는 공간
Garbage Collection의 특징
- GC는 한 번도 발생하지 않을 수 있다.
- GC가 발생하면, 소멸의 대상이 되는 인스턴스는 결정되지만 이것이 실제 소멸로 바로 이어지지는 않는다.
- 인스턴스의 실제 소멸로 이어지지 않은 상태에서 프로그램이 종료될 수도 있고, 종료가 되면 인스턴스는 자동 소멸..
728x90
'Programming > Java' 카테고리의 다른 글
[Java] 자바 Map 반복시키는 방법 (iteration) (0) | 2021.10.21 |
---|---|
[Java 객체지향 프로그래밍] 접근 제한자 (접근 제어자) (0) | 2021.03.01 |
[Java 객체지향 프로그래밍] 생성자 (Constructor) (0) | 2021.02.22 |
[Java 객체지향 프로그래밍] 오버로딩(Overloading) (0) | 2021.02.22 |
[JAVA 객체지향 프로그래밍] 패키지의 개념 (0) | 2021.02.21 |