Java ‐ 자바 메모리 구조 - thought-corner/Backend-PlayGround GitHub Wiki

자바 메모리 구조(JVM, Java Virtual Machine)

스크린샷 2025-01-16 오후 10 54 50

  • 메서드 영역 : 클래스 정보, static 영역, 런타임 상수 풀 등이 위치한다.
  • 스택 영역 : 각 쓰레드마다 독립적으로 생성되는 공간으로 지역 변수, 중간 연산 결과, 메서드 호출 정보 등을 포함한다.
  • 힙 영역 : 객체와 배열이 생성되는 영역이다. 가비지 컬렉션이 이루어지는 주요 영역으로 더 이상 참조되지 않는 객체를 대상으로 가비지 컬렉션이 이루어진다.

📚Java Virtual Machine

  • JVM은 객체와 배열을 저장하기 위한 가비지 컬렉션되는 힙 영역을 가지고 있다.
  • 코드, 상수 및 기타 데이터는 클래스 영역에 저장된다.
  • 메서드 영역은 논리적으로 힙의 일부이지만 구현에 따라 힙과 별도로 취급할 수 있으며, 가비지 컬렉션이 수행되지 않을 수 있다.
  • 각 JVM 쓰레드는 프레임을 저장하는 자체 호출 스택을 가지고 있다. 메서드가 호출될 때마다 새로운 프레임이 생성되고 해당 메서드가 종료되면 프레임이 소멸된다.
  • JVM은 참조와 스택/배열 인덱스를 사용하여 데이터에 접근한다. 대부분의 물리적 머신처럼 바이트 단위로 주소를 지정하지 않기 때문에 일반적인 32비트 또는 64비트 머신으로 구분하기 어렵다.
  • 64비트 플랫폼에서 실행되는 JVM은 32비트 플랫폼에서 실행되는 JVM보다 훨씬 큰 주소 공간에 접근할 수 있으므로 훨씬 큰 힙 크기와 더 많은 최대 쓰레드 수를 구현할 수 있다. 이는 대규모 애플리케이션에서 필요하다. 그러나 64비트 구현을 사용하면 32비트 구현에 비해 성능 저하가 발생할 수 있다.