Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 스택과 힙 메모리의 차이점

<시간/>

JVM은 메모리 공간을 스택(Stack)과 힙(Heap) 공간의 두 부분으로 나눴습니다. 스택 공간은 주로 메소드 실행 순서와 지역 변수를 저장하는 데 사용됩니다.

스택은 항상 LIFO 순서로 저장된 블록을 쌓는 반면 힙 메모리는 메모리 블록을 할당 및 할당 해제하기 위해 동적 할당을 사용했습니다.

힙에 할당된 메모리는 다음 이벤트 중 하나가 발생할 때까지 지속됩니다.

  • 프로그램 종료
  • 메모리 여유 공간

대조적으로 스택에 할당된 메모리는 함수가 반환될 때까지 지속됩니다. 다음은 차이점입니다.

Sr. 아니요. 스택 힙 메모리
1
기본
스택 메모리는 객체의 참조 변수인 지역 변수와 같이 수명이 매우 짧은 항목을 저장하는 데 사용됩니다.
힙 메모리는 객체 및 JRE 클래스를 저장하기 위해 할당됩니다.
2
순서
스택은 항상 LIFO(후입선출) 순서로 예약됩니다.
힙 메모리는 동적 할당이며 메모리에 블록을 할당 및 할당 해제하는 고정된 패턴이 없습니다.
3
크기
JVM 매개변수 -XSS를 사용하여 스택 메모리 크기를 늘릴 수 있습니다.
JVM 옵션 -Xms 및 -Xmx를 사용하여 힙 메모리 크기를 늘리거나 줄일 수 있습니다.
4
가시성
변수는 소유자 스레드에게만 표시됩니다.
모든 스레드에서 볼 수 있습니다.
5
예외
JVM은 java.lang.StackOverFlowError를 발생시킵니다.
JVM은 java.lang.OutOfMemoryError를 발생시킵니다.