Loading...

JAVA / / 2022. 1. 7. 14:53

자바 6강. JVM 아키텍쳐

반응형

모든 데이터에는 자료형이 있다.

자료형(data type)은 변수에 저장되는 자료의 타입을 의미한다.

변수는 데이터를 담아두는 상자와 같다고 생각할 수 있다.

상자들은 식별을 위해 이름표를 붙여준다.

이 이름표로 저장된 메모리의 영역을 찾을 수 있다.

이때 상자의 종류를 크기별로 나타내는 것을 자료형이라고 한다.

 

우선 프로그래밍을 한번 해보자

 

VarEx.java 파일을 만들 것이다.

Var은 variable 변수의 약자이다.

 

지금 우리는 메인 영역만 실행시킬 수 있기 때문에 메인 안에 적을 것이다.

상자를 만들건데 상자의 이름을 num이라고 정해줄 것이다.

상자의 크기는 이름 앞에 적어준다.

byte는 8비트이고, 숫자는 0~255까지 들어갈 수 있다.

package ex05;

public class VarEx01 {

    public static void main(String[] args) {
        byte num; // 변수의 선언(메모리에 공간만 확보)
    }
}

실행해보면 아무 일도 일어나지 않지 않았지만

메인 스택이 열리고 메모리의 스택 영역에 1바이트 공간을 확보한 상태이다.

그릇만 만들어둔 상태라는 말이다.

이것은 변수의 선언이라고 한다.

 

프로그래밍에서 '=' 은 '같다'가 아니고 대입을 한다는 대입 연산자이다.

오른쪽에 있는 값을 왼쪽에 대입해주는 것이다.

 

근데 num2에 1000을 대입하면 빨간 줄이 생긴다.

내가 지정한 변수의 크기보다 큰 값이 들어갔기 때문이다.

 

이렇게 변수를 선언하고 값을 넣어주는 것을 변수의 초기화라고 한다.

 

변수에 대해서 다음시간에 더 자세히 공부할 것이다.


여기서 JVM 아키텍쳐에 대해 알아보자.

 

JVM 아키텍쳐는 JVM의 구조를 말한다.

 

static 영역은 class마다 존재한다.

파일마다 존재한다고 생각하면 된다.

 

static과 stack, heap 모두 크게 메모리 영역이 있는데

main의 stack과 VarEx01의 static 영역이 만들어지는 것이다.

 

이때 main stack의 박스 범위를 넘어가게 데이터가 들어오면

stack overflow라는 오류가 발생하게 된다.

 

JVM이 static을 찾아서 메모리에 load 한 후

main을 찾아서 main stack이 열리는 시점에

main Queue라는 게 생성된다.

 

* Queue 또한 static, stack, heap처럼 논리적인 메모리 공간이다.

물리적으로는 다른 메모리와 다를 것이 없다.

package ex05;

public class VarEx01 {

    public static void main(String[] args) {
        byte num; 		// 변수의 선언(메모리에 공간만 확보, 박스만 만들어둔 상태)
        num = 1;		// 확보하고 데이터 대입
        byte num2 = 100; 	// 변수의 초기화(확보+대입)
    }
}

Queue는 대기열이라고 생각하면 된다.

 

위 프로그램 파일에서 main 중괄호가 stack 영역인데

stack이 열릴 때 Queue가 만들어지고 6, 7, 8번 문장이 Queue에 쌓이는 것이다.

Queue에는 왼쪽에서 오른쪽으로 쌓이고

먼저 들어온 문장이 먼저 실행되어 빠져나간다.

 

문장이 다 쌓이면 먼저 들어온 순서로 실행이 되는데

6번 문장을 실행하면

stack에 num이라는 이름을 가진 1byte 크기의 공간이 확보되고(선언) Queue에서 빠져나간다.

 

그다음 7번 문장을 실행하면

num 공간 안에 1이 들어가게 된다(초기화).

 

그다음 8번 문장을 실행하면

새로 num2라는 이름을 가진 1byte 크기의 공간 안에

100이 들어가고 Queue에서 빠져나간다(선언+초기화).

 

main Queue가 할 일을 모두 끝내면

① main stack에 있는 데이터를 날리고

② heap 데이터를 날리고

③ static 데이터를 날리고

④ 프로그램이 종료된다.

 

 

 

[출처]

 

https://cafe.naver.com/metacoding

 

메타코딩 : 네이버 카페

코린이들의 궁금증

cafe.naver.com

메타 코딩 유튜브

https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9

 

메타코딩

문의사항 : getinthere@naver.com 인스타그램 : https://www.instagram.com/meta4pm 깃헙 : https://github.com/codingspecialist 유료강좌 : https://www.easyupclass.com

www.youtube.com

 

반응형