[DEV] study&learn
article thumbnail
Published 2023. 1. 10. 03:04
JVM Stack & Heap 테코톡

JVM

- 자바 바이트 코드는 타겟 플랫폼에 상관 없이 JVM 위에서 동작한다.

- 물론, JVM 은 타겟 플랫폼에 의존한다.

 

Write Once, Run Anywhere" - Sun Microsysyems

네가 짠 자바 코드를 컴파일해서 배포하면, 어떤 플랫폼이든 다시 컴파일할 필요 없이 실행시킬 수 있어!
하지만 실행하려면 그 플랫폼에 맞는 JVM 이 설치되어 있어야 해!

 

자바 코드가 실행되기까지

 

모든 쓰레드가 공유

Method Area

- 클래스 로더가 클래스 파일을 읽어오면, 클래스 정보를 파싱해서 Method Area 에 저장

 

Heap

- 프로그램을 실행하면서 생성한 모든 객체(인스턴스)를 Heap 에 저장

 

 

쓰레드 마다 존재

Program Counter (PC)

- 각 스레드는 메서드를 실행하고 있고, PC 는 그 메서드 안에서 몇 번째 줄을 실행해야 하는지를 나타내는 역할

 

Stack

- 스택은 스레드 별로 1개만 존재하고, 스택 프레임은 메서드가 호출될 대마다 생성된다.

- 메서드 실행이 끝나면 스택 프레임은 pop 되어 스택에서 제거된다.

 

Stack Frame

- 스택 프레임은 메서드가 호출될 때마다 새로 생겨 스택에 push 된다.

 

Native method stack

- Java Bytecode 가 아닌 다른 언어로 작성된 파일을 컴파일할 때 사용되는 메서드이다.

 

Stack ? Register ?

JVM 은 어째서 레지스터가 아닌 스택을 사용하는가 ?

자바는 네트워크의 다기종의 디바이스에서 균일하게 동작할 수 있음을 보장하고 싶어했다.

디바이스마다 레지스터의 개수는 다르다.

그렇기 때문에 디바이스마다 동일한 동작이 보장될 수 있는 stack을 사용한 것 아닐까?

Reference

 

'테코톡' 카테고리의 다른 글

REST API란?  (0) 2023.01.20
CI/CD 와 무중단 배포  (0) 2023.01.13
Servlet & Spring Web MVC  (0) 2023.01.12
AOP 와 Spring AOP  (0) 2023.01.11
Spring 과 Spring Boot  (0) 2023.01.10
profile

[DEV] study&learn

@devjuni

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!