728x90
반응형
그동안 너무 바빠서 한동안 못 올렸던 국비지원과정 교육 내용을 다시 기록하려고 한다...
나태한 내 자신 스스로 채찍질 해야해..ㅠㅠ
우선 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
반응형
'회고록' 카테고리의 다른 글
[국비지원과정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 |
[국비지원과정15] JAVA - 이진탐색 알고리즘(while사용) (0) | 2023.05.22 |