English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
본문
JVM은 메모리 공간을 두 부분으로 나눕니다. 하나는 스택, 다른 하나는 스택 공간입니다. 스택 공간은 메서드 실행 순서와 지역 변수를 저장하는 데 사용됩니다
스택은 항상 LIFO 순서로 블록을 저장하며, 스택 메모리는 동적으로 할당되고 취소되는 메모리 블록을 사용합니다
스택에 배정된 메모리는 다음 중 하나가 발생할 때까지 존재합니다:
프로그램 종료
기억할 수 없음
반대로, 함수가 반환될 때까지 배정된 스택의 메모리는 항상 존재합니다. 다음은 차이점입니다. | 순서 | 키 | 스택 |
---|---|---|---|
1 | 스택 메모리 | 스택 메모리는 기본적으로 사용됩니다 | 스택 메모리는 간단한 프로젝트(예: 지역 변수, 객체의 참조 변수)를 저장하는 데 사용됩니다 |
2 | 주문 방식 | 스택은 항상 LIFO(후입 선출) 순서로 유지됩니다 | 스택 메모리는 동적으로 할당되며, 메모리에서 블록을 할당하고 취소할 수 있는 고정된 패턴이 없습니다 |
3 | 크기 | JVM 파라미터를 사용할 수 있습니다-XSS를 사용하여 스택 메모리 크기를 늘릴 수 있습니다 | JVM 옵션을 사용할 수 있습니다-Xms와-Xmx를 사용하여 스택 메모리 크기를 늘리거나 줄일 수 있습니다. |
4 | 보이는 정도 | 변수는 오직 소유자 스레드에만 볼 수 있습니다 | 모든 스레드가 볼 수 있습니다 |
5 | 예외 | JVM이 java.lang.StackOverflowError를 던집니다 | JVM이 java.lang.OutOfMemoryError를 던집니다 |