본문 바로가기

컴퓨터와 IT

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

메모리 영역

 

 

 

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은 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 할당받고 

메모리를 용도에 따라 여러 영역으로 나눈다.

 

앞의 세가지 영역이 이 데이터 에어리어 안에 속한다.

 

 

 

 

 

'컴퓨터와 IT' 카테고리의 다른 글

HTTP와 웹서버,그리고 브라우저의 관계  (0) 2020.05.13
동적할당, 정적할당, 가비지컬렉터  (0) 2020.05.13
부동소수점과 그 한계  (0) 2020.05.13
기계어와 어셈블리어  (0) 2020.05.13
아두이노  (0) 2020.05.12