메모리 영역
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 |