[국비지원과정19] JVM 구조

2023. 8. 6. 20:30·TIL
728x90
반응형
SMALL
그동안 너무 바빠서 한동안 못 올렸던 국비지원과정 교육 내용을 다시 기록하려고 한다...
나태한 내 자신 스스로 채찍질 해야해..ㅠㅠ

우선 JVM의 구조를 간단히 보자.
그림은 좀 깔끔하지 못하지만 최선을 다했다.

🟰메서드 영역(Method area)
☀️ 프로그램 실행 중에 어떤 클래스가 호출되면, JVM은 해당 클래스의 컴파일 된 클래스파일(.class)을 읽어서 분석하여 해당 클래스에 대한 정보를 이곳에 저장한다. 이 때 해당 클래스의 클래스변수도 이 영역에 함께 생성된다.
☀️만약 클래스 메서드와 인스턴스 메서드가 있다면 먼저 호출되는 것은 클래스 메서드이다.
☀️왜냐하면 인스턴스 메서드보다 메서드 영역의 클래스 메서드가 먼저 호출되기 떄문이다.

🟰힙(Heap)
☀️인스턴스가 생성되는 공간. 프로그램 실행 중 생성되는 인스턴스는 모두 이곳에서 생성된다. 인스턴스가 생성되면서 인스턴스변수들이 함께 생성된다.

🟰호출스택(call stack / excution stack)
☀️메서드 작업에 필요한 메모리 공간을 제공한다.
☀️메서드가 호출되면 호출스택에 호출된 메서드를 위한 메모리가 할당된다.
☀️말 그대로 스택이기 때문에 가장 최근에 호출된 메서드부터 차례대로 수행된다.
☀️메서드가 모든 수행을 마치면 호출스택에서 제거된다.

⏬위 내용을 돕기위한 예시코드!
이 코드들을 수행하면서 메서드의 수행 단계를 잘 생각해보자.
class CallStackTest{
	public static void main(String[] args) {
    	firstMethod();
    }
    
    static void firstMethod() {
    	secondMethod();
    }
	
    static void secondMethod() {
    	System.out.println("secondMethod()");
    }
}​

아래와 같이
📌secondMethod()가 가장 먼저 수행되고제거된다음
📌firstMethod()가 수행되며
📌그 뒤 메인메서드가 종료될 것이다.

728x90
반응형
SMALL

'TIL' 카테고리의 다른 글

[TIL] JPA 프로젝트 완성 및 배포  (0) 2025.02.05
[국비지원과정20] 자바 - 클래스 메서드와 인스턴스 메서드가 헷갈린다면?  (1) 2023.08.07
[국비지원과정18] JAVA - FOR문의 조건  (0) 2023.05.23
[국비지원과정17] JAVA - 반복문 For  (0) 2023.05.23
[국비지원과정16] JAVA - 등차수열 알고리즘  (0) 2023.05.22
'TIL' 카테고리의 다른 글
  • [TIL] JPA 프로젝트 완성 및 배포
  • [국비지원과정20] 자바 - 클래스 메서드와 인스턴스 메서드가 헷갈린다면?
  • [국비지원과정18] JAVA - FOR문의 조건
  • [국비지원과정17] JAVA - 반복문 For
공부하고 기억하는 공간
공부하고 기억하는 공간
IT 비전공자로 시작하여 훌륭한 개발자가 되기 위해 공부하고 있는 공간입니다. 틀린 내용이나 부족한 부분이 있으면 댓글로 알려주세요 바로 수정하겠습니다.
    250x250
  • 공부하고 기억하는 공간
    IT - railroad
    공부하고 기억하는 공간
  • 전체
    오늘
    어제
    • 분류 전체보기 (314)
      • 면접 준비 (36)
        • OS (6)
        • Spring Security (0)
        • Java (2)
        • DB (9)
        • Network (3)
      • ElasticSearch (2)
      • Kafka (4)
      • Spring (22)
        • Spring Cloud (7)
        • Security6 (5)
        • JPA (12)
        • 프로젝트 리팩토링 회고록 (4)
        • Logging (8)
        • Batch (2)
      • Redis (17)
        • Redis 개념 (8)
        • Redis 채팅 (5)
        • Redis 읽기쓰기 전략 (1)
      • AWS (11)
      • 리눅스 (29)
        • 리눅스 마스터 2급 (5)
        • 네트워크(기초) (7)
        • 리눅스의 이해 (6)
        • 리눅스의 설치 (2)
        • 리눅스 운영 및 관리 (6)
      • JAVA-기초 (16)
        • JAVA기본 (11)
        • Design Pattern (5)
      • JSP (27)
        • JSP 기본 개념 (10)
        • JSP (1)
      • SQL (1)
      • TIL (36)
      • 문제 풀이 (2)
        • Programmers (9)
        • 백준 문제풀이 (28)
      • JavaScript (10)
      • HTML (17)
      • Ngrinder (1)
        • Ngrinder 문서 정리 (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      jsp기초
      Spring
      자바기초
      JS
      redis
      redis 채팅
      springsecurity
      java
      자바스크립트
      Spring Data Redis
      CSS
      HTML
      자바 면접
      spring redis
      자바
      자바 반복문
      레디스
      JavaScript
      jsp request
      자바 면접질문
      리눅스마스터2급정리
      백준
      Til
      스프링프레임워크
      리눅스마스터2급
      JSP
      프로그래머스
      리눅스
      Springframework
      자바 알고리즘
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    공부하고 기억하는 공간
    [국비지원과정19] JVM 구조
    상단으로

    티스토리툴바