JVM : Java Virtual Machine ( 자바 가상 머신 )
- 응용프로그램이 실행되면 JVM은 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 할당받고 JVM은 이 메모리를 용도에 따라 나눔
--> 3가지 주요 영역 : method area, call stack, heap
① 메서드 영역 (method area)
: 어떤 클래스가 사용되면, JVM은 해당 클래스의 파일을 읽어 분서하여 정보를 클래스데이터에 저장한다. 이 때, 클래스변수도 함께 저장
② 힙(heap) : 인스턴스가 생성되는 공간 => 인스턴스 변수 생성
③ 호출스택(call stack) : 메서드의 작업에 필요한 메모리 공간 제공, 메서도가 호출되면 호출 스택에 메모리를 할당하고, 메서드를 종료하면 반환
* 호출 스택 생성 예시
class CallStack
public static void main(String[] args) {
System.out.println("main(String[] args)이 시작");
firstMethod();
System.out.println("main(String[] args)이 끝");
}
static void firstMethod() {
System.out.println("firstMethod()이 시작");
secondMethod();
System.out.println("firstdMethod)이 끝");
}
static void secondMethod() {
System.out.println("secondMethod)이 시작");
System.out.println("secondMethod)이 끝");
}
}
--> 스택 순서 그림으로 살펴보면, (매서드 안의 코드들이 수행되지 않으면 스택에 대기해야함)
참고 : 자바의 정석(남궁성)
'JAVA' 카테고리의 다른 글
JAVA_오버로딩(Overloading)과 오버라이딩(Overriding) (0) | 2021.07.29 |
---|---|
JAVA_객체지향(매개변수, 메서드 구분 ) (0) | 2021.07.28 |
JAVA_객체지향 프로그래밍2(변수, 메서드) (0) | 2021.07.28 |
JAVA_객체지향 프로그래밍1(OOP, 클래스, 객체, 인스턴스) (0) | 2021.07.28 |
JAVA_배열(String 배열, 다차원배열) 2 (0) | 2021.07.27 |
댓글