static, heap, stack, queue 구분

화낼거양's avatar
Nov 12, 2024
static, heap, stack, queue 구분
 
 

1. Static (정적 메모리 영역)

정적 메모리 영역은 프로그램이 시작될 때 할당되고 프로그램이 종료될 때 해제되는 메모리 영역입니다. 전역 변수나 정적 변수는 이 영역에 할당됩니다. 이 변수들은 프로그램의 전체 실행 시간 동안 존재합니다.

2. Heap (힙 메모리 영역)

힙 메모리 영역은 동적 메모리 할당을 위해 사용되는 영역입니다. malloc()이나 new와 같은 함수로 메모리를 할당하고, free()delete로 메모리를 해제합니다. 이 메모리 영역은 런타임에 크기가 변하며, 프로그램의 요구에 따라 유동적으로 할당됩니다. 힙 메모리는 대개 길게 사용되는 객체나 구조체의 메모리를 관리하는 데 사용됩니다.

3. Stack (스택 메모리 영역)

스택 메모리 영역은 함수 호출과 관련된 지역 변수 및 함수 호출 정보를 저장하는 데 사용됩니다. 함수가 호출될 때마다 스택에 프레임이 쌓이고, 함수가 종료되면 해당 프레임이 스택에서 제거됩니다. 스택 메모리는 LIFO(Last In, First Out) 구조로 동작하며, 메모리 할당과 해제가 매우 빠릅니다.

4. Queue (큐)

큐는 데이터가 삽입된 순서대로 처리되는 FIFO(First In, First Out) 구조를 가지는 자료구조입니다. 큐는 선형 자료구조로, 데이터는 한쪽 끝에서 삽입되고 반대쪽 끝에서 제거됩니다. 주로 작업 대기열, 프로세스 스케줄링, 데이터 스트림 처리 등에 사용됩니다.
 
 
 
 

JVM 실행 과정 예시

 
아래의 예시를 기준으로 설명합니다.
 
public class JvmTest { int num1 = 1; static int num2 = 2; void method1(int num3){ System.out.println("num3 : "+num3); int num4 = 4; System.out.println("num4 : "+num4); } public static void main(String[] args) { System.out.println("JVM Start"); System.out.println("num2 : "+JvmTest.num2); JvmTest jt = new JvmTest(); System.out.println("num1 : "+jt.num1); jt.method1(3); } }
 
 
 
notion image
 
Share article

moohyun