Hello

2019.09.01 본문

try

2019.09.01

nari0_0 2019. 9. 1. 22:59
728x90

JVM :JAVA 실행코드를 변경하지 않고 .class로 컴파일 하여 OS에 영향을 받지않고 실행되는 가상머신이다.

 

method area(static area) == Permanent Generation(PermGen)

모든 스레드가 공유하는 영역이다.

jvm이 시작될 때 만들어진다.

class와 interface를 읽어 static variable and method, bytecode, field and method, runtime constant pool의 메타 데이터를 가지고 있습니다. 쉽게말해 인스턴스 생성을 위해 필요한 정보가 저장되는 공간입니다.

runtime constant pool에는 class와 interface의 상수 필드 메소드에 대한 레퍼런스(주소)를 가지고 있습니다. 참조가 일어날 때 실제 주소를 검색합니다.

jvm vendor별로 가비지 콜렉션은 다를 수 있다.

 

heap area

인스턴스가 생성되는 공간으로 method area의 정보들을 바탕으로 새로운 객체를 생성하면 heap area에 메모리 할당됩니다.

garbage collection의 대상이 되는 영역 입니다.

 

stack area

각 스레드 별로 존재하는 영역이다. method가 실행될 때마다 stack frame이 생성되고 jvm stack에 추가됩니다. 메소드가 종료되면 stack frame이 제거됩니다.

stack frame은 시작 메소드의 호출에 쌓여있는 메소드 입니다.

 

JVM의 메모리 구조가 java 7에서 8로 버전이 바뀌면서 일부 변경이 일어났다.

위의 글에서는 static 변수와 메소드, 상수가 method area에 저장되었지만 JAVA8 부터는 Heap 영역으로 이동되어 저장된다.

 

728x90

'try' 카테고리의 다른 글

객체와 객체지향 프로그래밍  (0) 2019.09.10
2019.09.03  (0) 2019.09.03
2019.08.12  (0) 2019.08.12
2019.08.12  (0) 2019.08.12
2019.08.04  (0) 2019.08.04