쌤리

메모리영역 ( 코드 영역 , 데이터 영역 , 힙 영역 , 스택 영역) 본문

자바 JAVA/자바 관련 상식

메모리영역 ( 코드 영역 , 데이터 영역 , 힙 영역 , 스택 영역)

saml2l 2020. 5. 13. 12:34

메모리 영역

 

 

 

  1. 코드 ( code )영역 
    • 컴파일로 된 .class 코드 영역 (= 클래스/ 코드 /메서드 영역)
    • 0과 1로 된 2진수 (binary) 영역
    • static 변수/ static 메서드 (=static영역) : class 가 실행되기 전에 미리 메모리가 확보된다.
    • ☆프로그램이 실행되면 모든 코드가 저장되어있는 상태가 아니고
    • new키워드로 객체가 생성되기 전엔 텍스트 일뿐이다.
    • 객체 생성 후 메서드를 실행하면 해당 클래스 코드에 대한 정보를 method area 에 저장하게 된다.
  2. 스택( stack ) 영역
    • 가장 늦게 들어온 것부터 처리한다.
    • main()메서드가 가장 먼저 호출된다. ( 지역변수를 저장할 메모리가 필요하기 때문에)
    • 메서드가 생성될때 마다 하나씩 생성되며 메서드가 호출되면 메서드와 메서드의 정보는 stack area에 쌓이게 되고
    • 메서드 호출이 종료될때 이 영역에서 제거된다.
  3. 힙 ( heap ) 영역
    • 객체 인스턴스 ( new 키워드가 들어가는)는 무조건 heap 영역에 만들어진다. (생성자 메서드)
    • 호출되는 클래스 내의 메서들도 저장된다.
      • *만들어지는 순서 : code - stack - heap
      • *종료되는 순서 : heap - stack - code
    • 사용자가 관리하는 인스턴스가 생성되는 공간. 
    • 객체를 동적으로 생성하면 인스턴스가 heap area에 할당되어 사용되어진다.
    • 프로그램은 시작할때 미리 이 영역을 많이 할당해놓는다.
  4. Runtime Data Area (데이터 영역)
    • 자바는 운영체제으로부터 독립되어 JVM 환경에서 동작할 수 있도록 설계가 되어있는 언어이다.
    • 자바 프로그램이 실행되면 JVM은 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 할당받고 
    • 메모리를 용도에 따라 여러 영역으로 나눈다.
    • 앞의 세가지 영역이 이 데이터 에어리어 안에 속한다.
Comments