위 사진은 JVM의 전체적인 구조입니다. 클래스 로더(Class Loader) 자바 바이트 코드를 읽어서 JVM의 실행 엔진이 사용할 수 있도록 메모리의 메소드 영역에 적재하는 역할을 합니다. 로딩 -> 링크 -> 초기화 순으로 진행됩니다. 1. 로딩 클래스 로더가 .class 파일을 읽고 그 내용에 따라 적절한 바이너리 데이터를 만들고, 메소드 영역에 저장됩니다. 이때 메소드 영역에 저장하는 데이터는 다음과 같습니다. FQCN(Fully-Quailified Class Name) : 클래스 로더, 클래스 패키지 경로, 패키지 이름, 클래스 이름을 모두 포함한 값 Class, Interface, Enum 메소드와 변수 로딩이 끝나면 해당 클래스 타입의 Class 객체를 생성하여 힙 영역에 저장하게 됩니다...
JVM (Java Virtual Machine) 자바 가상 머신으로 자바 바이트 코드(.class)를 운영체제(OS)가 실행할 수 있는 네이티브 코드로 변환(Interpreter, JIT Compiler) 하여 실행 합니다. 해당 운영체제에 맞는 네이티브 코드로 바꿔서 실행해야 하므로, JVM은 특정 플랫폼에 종속적이며, JVM은 자바(JAVA)와 운영체제 사이에서 중개하는 역할을 수행하기 때문에 자바가 운영체제에 신경 쓸 필요 없이 재사용이 가능하도록 해줍니다. JVM은 바이트 코드를 실행하는 표준 스펙(JVM)이자 구현체(특정 밴더가 구현한 JVM)입니다. JVM 벤더로는 Oracle, Amazon, Adoptium, Azul 등 여러 벤더들이 있습니다. JVM의 자세한 스펙은 https://docs..
- Total
- Today
- Yesterday
- java11 optional
- 실행 엔진
- java abstractprocessor
- classloder
- Annotation Processor
- Reflection
- JVM 구조
- 리플렉션
- java optional
- 람다표현식
- javaagent
- java proxy pattern
- jvm
- 자바 리플렉션
- 클래스로더
- 바이트 코드
- optional api
- 애노테이션 프로세서
- Functional Interface
- 깃 기초
- bytebuddy
- 프록시패턴
- Java Reflection
- javassist
- JRE와 JDK의 차이점
- 자바 프록시 패턴
- 애노테이션
- java
- dromos
- 코드 커버리지
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |