# Java 기초지식
## Java 애플리케이션 실행 과정
1. Compiler 가 Java Source(.javac)를 Byte code(.calss)로 변환
2. Class Loader가 Byte code를 Runtime Data Area(런타입 데이터 영역, 메모리)에 로드시킴
3. 로딩된 Byte code가 Exceution Engine(실행엔진)에 의해서 실행되게 됨
> Byte Code: JVM에서 실행되게끔 만들어진 자바 코드 .class
## Java Memory 구조
> 스레드별: PC Register, JVM stack, Native Method stack
> 공통: Method Area, Heap
- PC Register: 명령어
- JVM Stack: 함수 매개변수, 지역변수, 리턴 정보
- Native Method stack: Java 외에 언어 (C, C++ 등)로 작성된 코드들이 실행됨
- Heap: 사용자가 사용하면서 생긴 데이터, 동적 할당
- Method Area: 클래스별로 전역변수, 정적변수들, 메서드 정보들이 저장됨
## 가비지커렉션 (Garbage Collection, GC)
> JVM에서 Memory 관리해주는 모듈
Heap Memory를 관리하기 위해서 불필요한 Memory 삭제
Mark and sweep 방식으로 Memory 에 있는 변수, 메서드들이 어디서 참조되고 있는지 확인해보고 참조되고 있는 영역이 없다면 삭제
이때, Thread가 잠깐 중단되기 때문에 성능이 떨어진다
'Java, Spring' 카테고리의 다른 글
[Java/DynamoDB] DynamoDBScanExpression reserved key error (0) | 2018.12.03 |
---|---|
[SpringBoot/JSP] Enum 한글 사용하기 (0) | 2018.11.27 |
[IntelliJ] cannot resolve method (1) | 2018.11.26 |
[Spring Boot] custom error page (0) | 2018.09.27 |
[Java, Mybatis] foreach 문법 (0) | 2017.03.20 |
댓글