[Java] 자바 프로그램의 메모리 사용 및 구동 과정 이해하기

김하밍·2024년 3월 20일

Java

목록 보기
36/46
post-thumbnail

객체 지향 프로그램의 메모리 사용 방식

main() 메소드가 실행되기 전 JVM에서 수행하는 전처리 작업들

  • java.lang 패키지를 T 메모리의 스태틱 영역에 배치합니다.
  • import된 패키지를 T 메모리의 스태틱 영역에 배치합니다.
  • 프로그램 상의 모든 클래스T 메모리의 스태틱 영역에 배치합니다.

T 메모리 구조

  • 객체 지향 프로그램에서는 데이터 저장 영역을 세 개의 영역으로 분할해서 사용합니다.
public class Start3 {
    public static void main(String[] args) {
        int i = 10;
        int k = 20;

        if (i == 10) {
            int m = k + 5;
            k = m;
        } else {
            int p = k + 10;
            k = p;
        }
//        k = m + p;
    }   // (1)
}

(1) line: 여기서 main() 을 닫는 중괄호로 인해, T 메모리 소멸/ JVM 기동 중지/ JRE가 사용했던 시스템 자원을 운영체제에 반납이 일어난다.

main() 메소드 종료 이후의 T 메모리 상태

main() 메소드가 프로그램의 시작점이자 끝이기도 합니다.
main() 메소드가 끝나면 JRE는 JVM을 종료하고 JRE 자체도 운영체제 상의 메모리에서 사라집니다. 그럼 T메모리도 이제 운명을 다하고 사라집니다.

자바 프로그램의 개발과 구동

  • JDK: Java Developent Kit / 자바 개발 도구
  • JRE: Java Runtime Environment / 자바 실행 환경
  • JVM: Java Virtual Machine / 자바 가상 기계

자바가 이런 구조를 택한 이유

기존 언어로 작성한 프로그램은 각 플랫폼(하드웨어와 OS의 조합)용으로 배포되는 설치 파일을 따로 준비해야 했던 불편함을 없애기 위해서 입니다.

자바 개발자가 본인이 사용 중인 플랫폼에 설치된 JVM용으로 프로그램을 작성하고 배포하면 각 플랫폼에 맞는 JVM이 중재자가 되어 각 플랫폼에서 프로그램을 구동하는 데 문제가 없도록 만들어줍니다.

이러한 자바의 특성을 Write Once Run Anywhere 라고 합니다.


참고

[도서] 스프링 입문을 위한 자바 객체 지향의 원리와 이해

profile
나만의 언어로 기록하며 성장하기 !

0개의 댓글