메모리 사용 영역

  • JVM은 OS에서 할당받은 메모리 영역(Runtime Data Area)을 세 영역으로 구분한다.
    • 메소드 영역
      • JVM을 시작할 때 생성
      • 로딩된 클래스 바이트 코드 내용을 분석 후 저장
      • 모든 스레드가 공유
    • 힙 영역
      • JVM을 시작할 때 생성
      • 객체/배열 저장
      • 사용되지 않는 객체는 GC가 자동 제거
    • JVM스택
      • 스레드별로 생성
      • 메소드를 호출할 때마다 Frame을 스택에 추가(push)
      • 메소드가 종료하면 Frame을 제거(pop)


메모리 사용 영역 실행순서

  1. Java MemoryExample
    • 운영체제로부터 메모리를 할당받아서 MemoryExample프로그램을 실행시킴
  2. JVM 구동
    • 메소드 영역(Method Area)과 힙(Heep Area)영역이 생성됨
  3. MemoryExample 로딩
    • 메소드영역에 코드가 분석된 내용이 올라감
  4. main 스레드 생성
    • main 스레드가 생성, 동시에 JVM 스택 생성
  5. main() 메소드 호출
    • JVM스택에 프레임이 생성됨
  6. main 메소드 실행 public static void main(String[] args) {...}
    • 매개변수 String[] args가 매개값으로 들어온다.
    • args매개변수는 프레임 내부에 생성된다.
    • String배열객체는 힙영역에 생성된다.
  7. JVM 종료

Leave a comment