원티드 프리온보딩 백엔드 챌린지 - 1 주차 두번째 수업 정리 -1

박경현·2023년 6월 9일
0

오늘은 클래스로더에 이어서 Run-Time Data Areas에 대해 살펴보려고 한다!
대충 힙과 스택만 알고 있었었는데 이번 수업에서 정확하게 각 파트를 알 수 있어서 진심으로 기뻤다!!!!

Run-Time Data Areas

5개의 큰 영역으로 나눠짐

PC Register - 스레드 별로 생성됨!, 실행중인 바이트 명령을 저장하는 영역!
Stack - 스레드 별로 생성되며 실행 관련 정보를 저장하는 영역(프레임 단위로 저장)
Native Method Stacks - 스레드 별로 생성되며 네이터브 코드 실행에 관한 정보를 저장하는 영역

이 아래 2개가 스레드 safe 하지 않은 영역임!

Heap - JVM실행시 생성되며, 모든 객체 / 인스턴스, 배열에 대한 메모리가 할당되는 영역
Method Area - JVM생성시 실행되며 클래스의 구조나 정보 등의 메타데이터를 저장하는 영역

각 영역들 상세하게 알아보자!

PC Register -> 스레드 생성 / 실행시 명령의 주소를 저장하는 영역임!
핵심은 네이티브 메서드가 아닌 java 메소드 일때만 실행 명령의 주소를 저장!

Stack - 스레드 생성시 할당되며 프레임이 저장되는 영역!!
로컬 변수 저장과 메서드 호출 / 반환등과 같은 작업시 사용
허용된거 보다 큰 스택 필요시 StackOVerFlowError가 발생

Frame - 생성되는 메서드 관련 정보 저장단위이며 동적연결, 메소드 값 반환, 예외 처리등에 사용한다

위에가 하나의 Frame에 들어간 파라미터를 나눠서 보여주고 있다

Method Area - JVM 실행시 모든 스레드에게 공유되며 클래스 별 구조와 정보(메타데이터)를 저장하는 영역!

Heap - 모든 객체 인스턴스, 배열에 대한 메모리가 할당되는 데이터 영역
GC가 처리되는 영역이며 , 힙은 크기가 가변이 됨!

언제 각 메모리에 넣어지고 실행되는지

JVM 실행시
heap, Method Area

스레드 실행시
pc register, stacks, nativeMethod stacks

메서드 호출시 - Frame

profile
SW로 문제를 해결하려는 열정만 있는 대학생

0개의 댓글