일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Spring SOLID
- 객체지향
- 단일 책임 원칙
- pc register
- solid
- 자료구조
- 스택
- Single Responsibillity Principle
- Stack
- JVM
- 개방폐쇄원칙
- Open Closed Principle
- 의존성 역전 원칙
- 실행 엔진
- 객체지향 설계 5원칙
- Native Method Stack
- 단일책임원칙
- Data Structure
- Java
- Spring
- 자바
- Heap
- Execution Engine
- CS
- 스택메모리
- 개방-폐쇄 원칙
- stack메모리
- Runtime data Area
- Class Loader
- 자바 heap
- Today
- Total
목록JVM (3)
Juuunew 살아남기
런타임 데이터 영역 (Runtime Data Area - 메모리) 런타임 데이터 영역은 자바 어플리케이션을 실행할 때 사용되는 데이터들을 적재하는 영역이다. 즉, 프로그램을 수행하기 위해 OS에서 할당받은 메모리 공간이다. 런타임 데이터 영역은 다섯가지의 영역으로 나눌 수 있다. Method Area Heap Area Stack Area PC Register Native Method Stack 이 중 Method Area, Heap Area는 모든 쓰레드가 공유하고, 나머지는 각 쓰레드마다 생성되는 영역이다. Method Area 클래스 멤버 변수의 이름, 데이터 타입, 접근 제어자 정보와 같은 각종 필드 정보들과 메서드 정보, 데이터 타입 정보, static 변수, final class 등이 생성되는 ..
실행 엔진이란? 실행엔진은 메모리에 적재된 클래스(바이트 코드)들을 기계어로 변경하여 명령어 단위로 실행한다. 바이트 코드를 운영체제에 맞게 해석해주는 역할을 수행하며 크게 두 가지 방식을 사용한다. 인터프리터 (Interpreter) JIT (Just In Time) 인터프리터 (Interpreter) 바이트 코드 명령어를 하나씩 읽어서 해석하고 바로 실행한다. 바이트 코드 한 줄씩 읽고 실행하는데 중복되는 바이트 코드들에 대해서도 매번 컴파일 하게되어 속도가 느리다는 단점이 있다. 따라서 중복되는 바이트 코드에 대해서는 JIT 컴파일러를 사용한다. JIT (Just In Time) 인터프리터의 속도 문제를 해결하기 위해 생겨난 기능이며, 인터프리터로 먼저 컴파일을 하다가 반복되는 코드를 발견하면 JI..
클래스 로더는 JVM 내로 컴파일된 자바 코드(.class)를 동적으로 로드하고, 링크를 통해 레퍼런스를 연결하는 과정을 거치고 static 값들 초기화 및 변수에 할당 후 JVM의 메모리 영역인 Runtime Data Area에 배치한다. 클래스를 메모리에 올리는 로딩 기능은 한번에 메모리에 올리지 않고, 어플리케이션에서 필요한 경우에 동적으로 메모리에 적재한다. 클래스 로더는 3단계로 진행된다. 로딩 -> 링크 -> 초기화 로딩 (Loading) : 자바 바이트 코드( .class )를 메소드 영역에 저장한다. 로딩이 끝나면 해당 클래스 타입의 Class 객체를 생성하여 "힙(Heap)" 영역에 저장. Bootstrap : JAVA_HOME/lib에 있는 코어 자바 API를 제공한다. (최상위 우선순..