티스토리 뷰
- JRE(Java Runtime Enviroment)는 크게 API, JVM으로 구성이 되어 있어 있으며, 그중 JVM(자바 가상 머신, Java Virtual Machine)은 클래스 로더를 통해 자바 클래스를 메모리로 로드하여 자바API를 이용하여 실행 합니다.
- Method안에서 선언한 로컬 데이터는 Thread로 부터 안전 하다는 의미는 JVM Stack에 저장 된 데이터로 해당 Thread에서만 사용 할 수 있기 때문 입니다. 또한그리고객체는 new연산자에 의해 메모리 heap에 생성 되고 JVM GC(Garbage Collector)에 의해 자동으로 Heap 메모리에서 해제 됩니다.
- JVM Data Type : 기본 자료형 4 Byte로 이것이 플랫폼 독립성을 보장 합니다.
- JVM 오류
- StrackOverflowError : Stack Frame에 Method를 추가 할 공간이 없을 때 발생 하면 JVM –Xss 옵션울 사용 하여 크기 조정 하여 해결 할 수 있습니다.
- OutOfMemoryError : 실행 중인 Thread가 많아서 JVM Stack를 할당 할 수 없을 때 발생 합니다. - 자바 실행과정
- 자바프로그램을 실행하면 JVM의 클래스 로더가 컴파일 된 자바 바이트코드(.class 파일)을 런타임 데이터 영역(Runtime Data Area)의 Method Area에 로드하고 실행 엔진(Execution Engine)이 이를 기계어로 변역 하면서 실행 합니다.
- JVM 상태
- JVM Runtime Data Area - 운영체계로 부터 부여 받은 메모리 영역
- Method Area : : 모든 쓰레드가 공유 하는 영역, JVM이 시작 할 때 생성, 클래스와 인터페이스 Method에 대한 바이트 코드, 전역변수, 런타임 상수 등이 저장 됩니다.
-> Main Method가 컴파일 된 Byte Code가 있습니다.
- Heap Area : 객체를 저장 할 떄 사용 하는 영역 => 성능 고려 필요
- JVM Stack ( 임시 메모리 ) : 실행 시 Stack Frame이라는 각 쓰레드 마다 하나씩 할당되며 실행되는 메소드의 Stack Frame에는 지역변수, 메소드의 인자, 메소드의 리턴 값, 리턴 번지 등이 저장되고 Stack Frame은 메소드가 끝나면 사라집니다.
- Program Counter Register : 쓰레드마다 하나씩 존재 : JVM의 명령어 주소
- Runtime Constant Pool : Method Area에 할당, 상수, 메소드, 필드를 저장하고 자바 프로그램이 참조 할 경우 메모리 주소를 찾아서 참조합니다.
- Native Method Stack : 자바 이외의 언어로 작성된 코드를 위한 Stack ( C, C++ 등 )
- JVM Runtime Data Area
- 메소드 내에서 객체 참조 하면 선언한 변수는 지역변수로 Stack에 위치 하여 Heap에 저장 된 객체에 대한 참조 값을 가집니다.- New 연산자는 Heap 메모리에 객체를 만들고 그 객체의 참조 값을 반환 됩니다.
'Java > 기본' 카테고리의 다른 글
008. 콘솔에 출력 하기 (0) | 2022.02.25 |
---|---|
007. 첫번째 프로그램 (0) | 2022.02.25 |
005. 자바 프로그램 구조 (0) | 2022.02.24 |
004. 자바 개발 TOOL 설치 (0) | 2022.02.24 |
003. JAVA 설치 (0) | 2022.02.24 |