자바
썬 마이크로시스템즈(현 오라클)의 제임스 고슬링을 필두로 개발한 객체지향언어
OOP
프로그래밍에서 필요한 데이터를 추상화해 속성과 메소드를 가진 객체를 만들고 그 객체들 간 상호작용을 통해 로직을 구현하는 프로그래밍 방법
장점
- 코드 재사용성 증가
- 유지보수가 쉬움
- 대형 프로젝트에 적합
단점
- 처리속도가 느림
- 설계하는 데 시간 소요
주요 키워드
- 객체
- 추상화
- 캡슐화
- 상속
- 다형성
JVM
자바 가상 머신의 준말
특징
- 자바 프로그램이 OS에 종속되지 않고 실행할 수 있는 환경을 제공
- 자바 프로그램의 메모리 관리 및 GC를 수행함
- 결과적으로 OS와 자바 사이의 중개자 역할 수행
- 쓰레드 동기화
자바 프로그램 실행 과정
- 자바 프로그램이 실행되면 JVM이 OS로 부터 필요한 메모리를 할당
- 그 후 자바컴파일러가 자바 소스파일을 바이트코드로 변환
- 클래스로더가 해당 바이트코드를 JVM에 적재
- excution engine이 해당 바이트코드를 해석
- 해석된 코드는 Runtime data Areas에 배치되어 수행
Runtime data Areas의 구조
PC Register
쓰레드마다 할당
현재 수행되는 명령어의 주소를 저장
JVM Stack
C의 스택과 유사
임시로 저장되는 데이터(지역변수, 파라미터, 리턴값)들을 저장
Native method stack
자바 언어가 아닌 다른 언어를 위한 공간
기계어로 작성된 프로그램을 실행시킴
이 공간을 통해 c code로 커널에 접근 가능
class area
처음 메모리에 올라갈 때 초기화할 대상을 저장하기 위한 공간
가비지 콜렉터
new 키워드를 이용해 heap 메모리에 생성된 객체들을 관리하기 위함
Minor GC
Young 영역 중 Eden 영역이 가득차게 되면 수행
객체들의 참조 여부(Reachability)를 검사하고 살아있을 경우 Survivor 영역으로 이동
Survivor 0, 1은 교대로 복사되고 정리됨
Major GC
Minor GC가 여러번 수행된 객체들을 Old영역으로 보낸다
이때는 GC를 수행하는 스레드를 제외하고 모두 정지(Stop the World)
반응형
'공부' 카테고리의 다른 글
HTTP와 HTTPS (0) | 2020.05.28 |
---|---|
파이썬의 GC, GIL (0) | 2020.05.27 |
끝이 안보이는 기사 공부 (0) | 2020.05.13 |
마크다운과 Notion 적응기 (0) | 2020.04.29 |
카카오프로젝트100을 이용한 100일 프로젝트 (0) | 2020.03.23 |
댓글