본문 바로가기
언어/Java

[메모리 구조]

by 불면증김씨 2022. 1. 24.

            일반변수와 레퍼런스변수            

변수 선언

타입 변수;

ex) int num;

 

변수 초기화(메모리에 할당)

타입 변수 = 값;

ex) int num = 10;

 

여기서 num은 일반변수 / d는 레퍼런스변수(참조변수)

 

 

               메서드               

자바에서 손님이나 커피 머신이라는 타입은 없다. 그래서 Class로 만들어야 한다.

커피 마시기, 커피 만들기 같은 행위Method라고 한다. 메서드는 클래스가 들고 있는 행위이다.

 

 

             Stack 메모리               

 

            Queue / Stack            

 

예시

 

main 메서드 코드영역 오픈 – 19번 실행, 20번 실행, 21번에서 a메서드 호출

a 메서드 코드 영역 오픈 – 6번에서 b메서드 호출

b 메서드 코드 영역 오픈 - 13,14,15번 실행

b메서드가 다 실행되고 쓸모가 없어지면 빠져나온다 이를 pop이라고 한다.

a메서드도 모든 코드가 전부 실행되고 나면 빠져나온다.

main 메서드가 전부 실행되고 pop. 더 이상 stack에 아무것도 없어진다.

Stack에 main메서드가 올라오는게 자바 프로그램이 시작되는 것이고,

Stack에 있는 main메서드가 다 처리되어 pop되는 것이 프로그램에 종료이다.

 

 

           지역변수와 전역변수            

지역변수 -> stack에 저장되는 애들, 메모리에 떠있는 시간 짧다.

전역변수 -> heap, static에 저장되는 애들, 메모리에 떠있는 시간 길다.

 

Stack (지역변수 = 메서드가 실행될 때, 메모리에 할당된다. = 메서드가 종료될 때, 메모리에서 사라진다.)

Heap (전역변수 = new할 때, 메모리에 할당된다. = 더 이상 참조하지 않을 때, 메모리에서 사라진다.)

Static (전역변수 = main메서드가 실행되기 전에 메모리에 할당된다. = main메서드가 종료되면 메모리에서 사라진다.)

 

 

                 메서드의 리턴               

리턴이 없게된다면 add메서드가 실행되고 sum은 메모리에서 소멸된다. 그러면 sum 값을 다른 곳에서 찾을 수 없다. 다른 곳에서 sum의 값을 가져오기 위해서 return이 필요하다.

 

add메서드에서 값을 main에게 리턴해주고 할일이 없어지면 add큐는 종료된다. Stack메모리에 sum 또한 사라진다.

그러고 13번 라인에서 result값이 stack에 오른다.

'언어 > Java' 카테고리의 다른 글

[JVM]자료형  (0) 2022.01.24
[JVM]static heap stack  (0) 2022.01.24
[JVM]JDK  (0) 2022.01.24

댓글