Programming/Java

[Java 객체지향 프로그래밍] 메모리 모델 - JVM

joah.k 2021. 3. 1. 17:24
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