Coding (코딩)/Java (자바)
자바 메모리 구조 (Java Memory structure)- Stack Memory
매일매일 배우는 개발자
2021. 3. 29. 12:00
728x90
자바(JVM)에서는 애플리케이션을 효율적으로 실행하기 위해 메모리를 스택 과 힙 메모리로 나눠서 관리합니다.
스택의 경우 수식계산, 수식괄호검사, 워드프로세서의 undo/redo (작업취소 및 되돌리기), 웹브라우저의 뒤로/앞으로 등에서 사용됩니다.
스택메모리는 정적 메모리 입니다
docs.oracle.com/javase/8/docs/api/ (자바8 API 입니다. 스택을 설명하고 있다.)
Stack Memory
- 지역변수, 매개변수등 변수가 저장되는 영역입니다
- 메서드의 정보가 저장되는 영역입니다
- LIFO순서 입니다(Last-In-First-Out) ->먼저 들어온것이 나중에 나가는 순서입니다.
- 새로운 메서드가 실행될때마다 스택 메모리영역에 자동으로 새 블럭이 생성됩니다.
- 스택 메모리가 가득차면 Java는 java.lang.StackOverFlowError를 발생시킵니다.
- 각각의 스레드는 하나의 스택영역을 가집니다.
- pop(),push(),peek(),isEmpty() 4가지 기능을 제공합니다
스택 메서드 5가지
- push(object item) - 맨 위에 객체를 하나 저장한다
- pop() - 맨 위에 객체를 하나 추출한다
- peek() - 맨 위에 객체 보기
- isEmpty() - 스택 메모리가 비어있는지 확인
- search(Object 0) - 스택에서 주어진 객체를 찾아 그 위치를 반환
class Person {
int id;
String name;
public Person(int id, String name) {
this.id = id;
this.name = name;
}
}
public class Stack {
public static void main(String[] args) {
int id = 23;
String name = "Han";
}
}
Stack Memory |
<Person Class> |
id=23 |
name |
this |
<Main> |
id = 23 |
Name |
Stack 메모리에서는 항상 Main 클래스가 먼저 쌓이고 그 다음 차례대로 Class가 쌓인다.
728x90