Back-end/이것이 자바다[신용권 한빛미디어]

JVM 내부구조

Ho's log 2021. 7. 25. 18:22

메소드 영역

클래스들을 클래스 로더로 읽어 클래스 별로 런타임 상수풀(runtime constant pool), 필드(field), 데이터, 메소드(method) 데이터, 메소드 생성자(constructor) 코드 등을 분류해서 저장

 

힙 영역

객체와 배열이 생성되는 영역, 

JVM 스택 영역에서 병수나, 다른 객체의 필드에서 참조, 

참조되는 것이 없으면 GC 실행 자동 제거 

 

JVM 스택(영역)

각 스레드 마다 하나씩 존재 스레드가 시작될때 할당, 

추가적 스레드 생성 하지 않았다면 , main 스레드만 존재 JVM 스택도 하나 

JVM스택은 메소드를 호출할때 마다 프레임(Frame) 추가 (Push) 하고 메소드가 종료되면 해당 프레임을 제거(Pop) 하는 동작을 수행 

예외 발생시 printStackTrace() 메소드로 보여주는 StackTrace 각 라인은 하나의 프레임 표현 

 

프레임내부

로컬 변수 스택,  기본타입, 참조 타입 변수가 추가되거나 제거 된다

기본 타입 변수는 스택영역에 직접 값을 가지고 있지만, 참조 타입 변수는 값이 아니라 힙영역이나 메소드 영역의 객체 주소를 가짐

배열 -> 객체 취급 

 

 

 

 

'Back-end > 이것이 자바다[신용권 한빛미디어]' 카테고리의 다른 글

배열 타입  (0) 2021.07.25
String 타입  (0) 2021.07.25
Java 연산자  (0) 2021.07.25
java 타입별 최대, 최소 값 주기  (0) 2021.07.21
Java 타입 변환  (0) 2021.07.21