본문 바로가기

2023.11.21-2024.05.31

231220 JAVA memory(메모리 구조)

package memory;

//메모리 구조

/*

* 중요 : 호출 스택은 예외처리 할 때 필요합니다.

*

* 메소드 영역 : 클래스 데이터(클래스 변수)

* 프로그램 실행 중 어떤 클래스가 사용되면 jvm

* 해당 클래스 파일을 잃어서 클래스 데이터를 이곳에 저장한다

* 동시에 클래스 변수도 이곳에 생성한다.

*

* 호출 스택 : 메인 메소드(지역변수)

* 메소드가 작업에 필요한 메모리 공간을 제공해줍니다.

* 메소드가 호출되면 호출스택에 메소드 활요을 위한 메모리가 할당됩니다.

* 메모리에서 메소드가 작업을 수행하는 동안 지역변수와 연산의 중간 경과가 저장됩니다.

* 메소드가 작업을 마치면 할당되었던 메모리 공간은 반환->비워집니다.

*

* 호출 스택은 제일 상위에 있는 메소드가 지금 실행중인 메소드

* 나머지는?

*

* 모두 대기를 합니다.

* 언제나 호출스택 최상위에 있는 메소드가 지금 실행 중인 메소드입니다.

* 아래에 있는 메소드는? 바로 위에 있는 메소드를 호출한 메소드 입니다.

*

* 힙 : 인스턴스가 생성되는 공간

* 인스턴스 변수

*

* 리턴타입이 있는 메소드는 종료되기 직전 결과값을 반환합니다.

* 누구에게? 자신을 호출한 메소드에게 결과값을 반환합니다.

* 누구? 대기 타고 있는 호출 메소드가 받아서 프로그램을 진행합니다.

*

*

* */

 

 

 

public class Memory {

public static void main(String[] args) {

System.out.println("main method start");//1

System.out.println("first 메소드 작업중");//2

first();

System.out.println("main method end");//9

}

static void first() {

System.out.println("first method start");//3

System.out.println("first 메소드 작업중");//4

second();

System.out.println("first method end");//8

}

static void second() {

System.out.println("second method start");//5

System.out.println("second 메소드 작업중");//6

System.out.println("second method end");//7

}

 

}

 

main method start

first 메소드 작업중

first method start

first 메소드 작업중

second method start

second 메소드 작업중

second method end

first method end

main method end

 

'2023.11.21-2024.05.31' 카테고리의 다른 글

231220 JAVA enum(열거형 타입)  (0) 2023.12.21
231220 JAVA IsAHasA  (1) 2023.12.21
231220 JAVA avengers 패키지  (0) 2023.12.20
231220 JAVA zoo 패키지(다형성)  (0) 2023.12.20
231220 JAVA Inter02(인터페이스)  (0) 2023.12.20