-
[Java_Basic]자바 가상머신의 메모리 모델(윤성우의 열혈 Java 프로그래밍)Java/Basic 2021. 1. 5. 22:18
자바 가상 머신 (JVM) 은 운영체제 위에서 실행된다.
운영체제에겐 똑같은 응용프로그램이므로 운영체제에게서 메모리를 할당받는다.
운영체제가 할당해준 메모리 안에서 스스로 실행하고, JVM만이 아닌 필요한 다른 자바 응용 프로그램의 실행도 돕는다.
가상머신은 메모리를 효율적으로 사용하기 위해 구간을 나눠놨다
메소드영역, 스택영역, 힙영역이 그것이다.
메소드 영역
: 메소드의 바이트코드, static변수
바이트코드(명령문들의 모임)
메소드 영역은 프로그램이 종료될때 까지 유지된다
스택 영역
: 지역변수, 매개변수
스택 임시저장. 자신의 할당영역 벗어나면 소멸된다.
힙 영역
: 인스턴스
하나의 참조변수가 사라진다해서(스택) 인스턴스까지 지우면 안된다. 이 이유가 인스턴스를 스택 영역에서 다루지 않는 이유이다.
인스턴트의 참조값 주고받을때 있지 않는가. 하나의 인스턴스를 둘 이상의 참조변수가 참조할 수 있다. 그렇기에 참조변수가 지워졌다고 그것이 참조하는 인스턴스를 바로 지울 수 없다.
더이상 해당 인스턴스가 아무것도 참조하지 않는다고 판단될 때 지운다.
이 일은 자바가상머신 대신 해준다.
-> 가비지 컬렉션 : 조심스럽게 지우기 위함
'Java > Basic' 카테고리의 다른 글
[Java_Basic]자바의 기본 클래스(윤성우의 열혈 Java 프로그래밍) (0) 2021.01.23 [Java_Basic]자바의 메모리 모델과 Object 클래스(윤성우의 열혈 Java 프로그래밍) (0) 2021.01.06 [Java_Basic]예외처리(윤성우의 열혈 Java 프로그래밍) (0) 2021.01.02 [Java_Basic]인터페이스와 추상 클래스(윤성우의 열혈 Java 프로그래밍) (0) 2021.01.02 [Java_Basic]클래스의 상속3 : 상속의 목적(윤성우의 열혈 Java 프로그래밍) (0) 2021.01.02