1 분 소요


JVM표

JVM이란?

JVM은 Java Virtual Machine의 약자로, 컴퓨터의 환경을 소프트웨어로 구현한 것을 말한다. 즉, 컴퓨터의 환경을 복사해서 만든 환경이다.

그렇기 때문에 컴퓨터의 입장에서는 힙영역에 해당되지만 JVM은 스택 구조로 동작하는 스택기반이다.

Class area(클래스 영역)란?

JVM이 시작할 때 생성되는 메모리 영역이다. 클래스영역은 jvm이 종료될 때 소멸하므로 종료되지 않으면 소멸되지 않는 영역이다.

스테틱 멤버변수, 인스턴스 멤버변수, 데이터 타입, 접근제한자에대한 정보, 반환타입, 상수풀, 인터페이스 등이 저장된다.

  • 정적오브젝트: 클래스, 인터페이스, 스테틱 멤버변수, 상수

  • 동적오브젝트: 스테틱 메서드, 메서드, 기본 생성자, 필드 생성자 등

Stack area(스택영역)란?

스택

프로그램이 자동으로 사용하는 메모리 영역이다. 스레드가 생성될때마다 하나씩 생성되며 독립적으로 가지고 있는 메모리영역이다.

로컬변수, 매개변수, 원시타입의 값, 참조 타입의 실제값 등이 저장되는 영역이다.

Heap area(힙영역)란?

힙

힙 영역은 가비지 컬렉션에 의해 소멸 될수 있는 영역이다. 사용자에의해 주소값을 변경할 수 있다. 힙영역은 개발자에 의해서 메모리 공간이 동적으로 할당되고 소멸한다.

new 연산자의 인스턴스 변수, 인스턴스 멤버변수, 배열변수, 참조타입변수 등이 저장되는 영역이다.

PC Register(프로그램 카운터 래지스터)란?

스레드가 생성될 때마다 생성되는 영역이다. 스레드가 실행 되고 있는 부분의 주소와 명령을 저장하고 있다.

PC Register가 하는일

  • 스레드가 몇 개 존재하는지 관리한다.

  • 스레드로 실행되는 프로그램 코드의 메모리 위치는 어디인지 관리한다.

  • 스레드의 상태는 무엇인지 관리한다.

  • 스레드 우선순위는 얼마인지 관리한다.

Native method stack(네이티브 메서드 스택)이란?

자바 언어가 아닌 다른 언어로 작성된 네이티브 코드를 위한 메모리 영역이다.

운영체제가 구현된 언어인 C나 C++ 등으로 운영체제의 고유기능을 만드는 영역이다.

자바에서 다른 언어를 사용하기 위해서 native지시어를 사용한다.

각 영역별로 설명을 하였지만 실제로는 영역이 나눠져있는 것이 아닌 한곳에 합쳐져있는 형태라고 생각하면 된다.

스택

위의 사진은 스택영역에 있는 메모리가 힙으로 바꾸게 되었을때의 모습을 그린것이다.

카테고리:

업데이트:

댓글남기기