1. 메모리
- 프로그램 실행하기 위한 데이터 및 명령어 저장 공간.
2. JVM이란?
- Java Virtual Machine
- java프로그램은 JVM으로 실행 가능하다 → 자바는 JVM 위에서 실행 되기 때문에 OS에 독립적이다.
- 자바 소스 코드 컴파일 후 생성된 파일이 해석(interpret)과 Link없이 바로 JVM에 적재 되고, OS로부터 메모리를 할당받아 GC(Garbage Collection)를 통해 스스로 메모리 관리를 한다는 특징이 있습니다.
- 메모리 할당 등 메모리 관리 기능
- bytecode를 interpreter 형태로 OS에 맞추어 interpret, execute한다
- JAVA와 OS 사이의 중개자 역할.
3. JVM 구조 그림
- JVM은 크게 가비지컬렉터, Execution Engine, Class Loader, Runtime Data Area로 나뉨.
- Runtime Data Area와 Class Loader에 대해서는 저번 포스팅에서 알아 봤었음. JVM 메모리 구조멀티 쓰레드에 의한 동시 호출에서 안정성이 보장되는 코드를 말한다. 즉, 멀티 쓰레드 환경에서 코드가 개발자가 의도한대로 동작하는 것을 말한다. 이 쓰레드 세이프에 대해 공부하다가 JVM의 메모리 구조를 공부하게 되었다. 프로그램을 구동하기 위해서 운영체제(OS)가 데이터를 저장할 공간을 할당함. 메모리 공간은 크게 Static, Stack, Heap 영역으로 구분 됨. 출처) https://velog.io/@agugu95/자바와-JVM-그리고-메모리-구조 Runtime Data Areas라고도 불린다.
https://goneoneill.tistory.com/43?category=1070108
Execution Engine
- Byte Code를 실행 가능하게 해석해주는 기능.
Class Loader
- 클래스 파일을 메모리에 적재하는 기능.
Runtime Data Area
- 프로그램을 수행하기 위해 OS에서 할당 받은 메모리 공간
- 이 공간은 크게 힙, 스택, 메소드(=클래스) area로 나뉨.
Garbage Collector
- 메모리 할당, 관리
- 코드에서 a라는 객체가 만들어져 메모리의 한 부분을 점유 하게 되고, 특정 메소드 호출 후 수행이 완료되어 해당 객체가 더이상 필요 없는 객체, 쓰레기가 된다. 이 쓰레기 객체를 효과적으로 처리하는 작업을 GC라고 함.
4. JVM 상세 전체 구조도
5. 출처
Uploaded by Notion2Tistory v1.1.0