JAVA JVM

김국민·2025년 2월 25일

JAVA

목록 보기
10/21

자바의 특징

  1. 플랫폼 독립성
  2. 객체지향
  3. 거대 생태계

java vs other languege

other application code -> OS -> H/W
java application code -> jvm -> OS -> H/W

jvm을 거치기 때문에 -> 속도가 느림
완전히 컴파일 된 상태가 아니라 실행시 해석됨 -> 느림

느린데 왜쓰나??

플랫폼 독립성 -> 어떤 OS이든 똑같이 동작하려고 (OS에 종속 x)

실행순서

.java -> javac(컴파일) -> .class(classLoader에 저장) ->기계어 -> 실행

JDK

자바 개발할 때 필요한 개발 도구모음

Javac

자바 컴파일러로 .java파일을 .class 파일(바이트코드)로 변환
바이트코드 : jvm이 해석할 수 있는 코드

바이트코드는 java프로그램이 실행되기 위해 변환되는 중간단계 코드

JVM만 있다면 어디서든 실행가능

JVM

자바 가상환경
바이트코드를 해석하고 자바 프로그램을 실행시키는 역할
실행환경 관계없다!

실행순서

JVM 메모리 영역


1. Method Area
프로그램이 실행되면 작성한 .java 파일 데이터가 저장됨
프로그램 실행시점에 한번 저장됨
프로그램 전체에서 공용으로 활용가능
static 변수 메서드가 이 공간에 위치한다

  1. Heap
    new 키워드로 생성된 객체는 Heap 영역에 저장됨
    stack 의 영역 변수가 Heap 영역의 객체를 참조

  2. Stack
    메서드가 호출 될때마다 stack 영역에 메모리가 할당
    각 메서드의 지역변수가 저장됨
    LIFO 구조 (후입선출)
    메서드가 시작되면 해당 메서드의 정보와 변수가 stack에 저장
    끝나면 메모리에서 제거됨
profile
개발지망생

0개의 댓글