English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

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

본문

JVM은 메모리 공간을 두 부분으로 나눕니다. 하나는 스택, 다른 하나는 스택 공간입니다. 스택 공간은 메서드 실행 순서와 지역 변수를 저장하는 데 사용됩니다 

스택은 항상 LIFO 순서로 블록을 저장하며, 스택 메모리는 동적으로 할당되고 취소되는 메모리 블록을 사용합니다

  • 스택에 배정된 메모리는 다음 중 하나가 발생할 때까지 존재합니다: 

  • 프로그램 종료 

기억할 수 없음

반대로, 함수가 반환될 때까지 배정된 스택의 메모리는 항상 존재합니다. 다음은 차이점입니다.순서스택
1
스택 메모리
스택 메모리는 기본적으로 사용됩니다 
스택 메모리는 간단한 프로젝트(예: 지역 변수, 객체의 참조 변수)를 저장하는 데 사용됩니다
2
주문 방식 
스택은 항상 LIFO(후입 선출) 순서로 유지됩니다
스택 메모리는 동적으로 할당되며, 메모리에서 블록을 할당하고 취소할 수 있는 고정된 패턴이 없습니다 
3
크기
JVM 파라미터를 사용할 수 있습니다-XSS를 사용하여 스택 메모리 크기를 늘릴 수 있습니다
JVM 옵션을 사용할 수 있습니다-Xms와-Xmx를 사용하여 스택 메모리 크기를 늘리거나 줄일 수 있습니다.
4
보이는 정도 
변수는 오직 소유자 스레드에만 볼 수 있습니다 
모든 스레드가 볼 수 있습니다 
  5 
예외
JVM이 java.lang.StackOverflowError를 던집니다
JVM이 java.lang.OutOfMemoryError를 던집니다