자바 함수 호출과 스택 메모리
자바 내에서 로직이 어떻게 수행되는지 알아봐요.
함수 호출과 스택 메모리
스택(Stack)
여기서 말하는 스택은 함수가 호출될 때 지역 변수들이 사용하는 메모리에요. 운영체제를 공부하셨다면 메모리 공간을 코드, 데이터, BSS(초기화 안된 정적, 전역 변수), 힙, 스택으로 구성되었단걸 아실겁니다. 그 스택Stack
을 말하는 거에요. 스택은 함수의 수행 또는 지역변수 범위가 끝나면 자동으로 반환되요.
전개 방식
우선 아래 코드를 기준으로 설명드려요.
public class FunctionTest {
public static int addNum(int n1, int n2){
int result;
result = n1 + n2;
return result;
}
public static void sayHello(String greeting){
System.out.println(greeting);
}
public static int calcSum(){
int sum = 0;
for(int i = 0; i <= 100; ++i){
sum += i;
}
return sum;
}
public static void main(String[] args){
int num1 = 10;
int num2 = 20;
int sum = addNum(n1, n2);
System.out.println(total);
sayHello("하이여");
total = calcSum();
System.out.println(total);
}
}
해당 코드가 수행하는 로직, 그 중 addNum
함수를 수행하는 동안 메모리 공간의 변화는 아래와 같아요.
부연 설명을 하자면, 처음에 main()
함수가 사용할 메모리 공간이 스택에 생성되요(num1
, num2
, sum
). 그 다음에 addNum
이 호출되면 스택에 함수의 메모리 공간을 할당해요(n1
, n2
, result
). 그 다음에 addNum
수행이 끝나면 해당 공간은 자동으로 사라져요, 스택Stack
처럼요.
자바는 다른 메모리 관리 방식이 있는 줄 알고 들으면서 정리했는데 별반 차이는 없네요 ㅎㅎ. 그래도 리마인드 겸에서 기록해봅니다 ~,~
Author And Source
이 문제에 관하여(자바 함수 호출과 스택 메모리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@redgem92/자바-함수-호출과-스택-메모리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)