본문 바로가기
BackEnd/Java

[Java] 메모리 Memory

by summer_light 2021. 7. 13.

메모리 Memory

 

1. 메소드 영역

- 클래스 데이터 (클래스 변수)


프로그램 실행 중 어떤 클래스가 사용되면 JVM은 해당 클래스 파일을 읽어서

클래스 데이터를 이곳에 저장하고,

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

 

2. 호출 스택

- 메인 메소드(지역 변수)

메소드 작업에 필요한 메모리 공간을 제공한다.


메소드가 호출되면

호출스택에 메소드 활용을 위한 메모리가 할당된다.
메모리에서 메소드가 작업을 하는 동안, 지역변수연산의 중간 결과가 저장된다.


메소드가 작업을 마치면

할당된 메모리 공간은 반환되어 비워진다.
호출스택의 제일 상위에 있는 메소드가 지금 실행중인 메소드이다.

아래에 있는 메소드가 바로 위에 있는 메소드를 호출해서 사용중인 메소드이다.


나머지는?
나머지는 모두 대기한다.

 

 

3. 힙 영역

- 인스턴스(인스턴스 변수)
인스턴스가 이곳에 생성된다.

 

 

package memory;

public class memory {
public static void main(String[] args) {

System.out.println("메인 메소드 시작");
first();
System.out.println("메인 메소드 끝");

}


public static void first() {

System.out.println("first 메소드 시작");
second();//세컨드 호출
System.out.println("first 메소드 종료");

}

public static void second() {

System.out.println("second 시작");
System.out.println("second 끝");

}

}

출력결과:

메인 메소드 시작
first 메소드 시작
second 시작
second 끝
first 메소드 종료
메인 메소드 끝

'BackEnd > Java' 카테고리의 다른 글

[Java] 컬렉션 Collection  (0) 2021.07.14
[Java] 랩퍼클래스 Wrapper Class  (0) 2021.07.13
[Java] 열거 타입 Enum  (0) 2021.07.13
[Java] 다형성 Polymorphism  (0) 2021.07.13
[Java] 추상 Abstract  (0) 2021.07.13

댓글