본문 바로가기
공부

기술 면접 준비 - 자바

by GGT 2020. 5. 27.

자바

썬 마이크로시스템즈(현 오라클)의 제임스 고슬링을 필두로 개발한 객체지향언어

OOP


프로그래밍에서 필요한 데이터를 추상화속성과 메소드를 가진 객체를 만들고 그 객체들 간 상호작용을 통해 로직을 구현하는 프로그래밍 방법

장점

  • 코드 재사용성 증가
  • 유지보수가 쉬움
  • 대형 프로젝트에 적합

단점

  • 처리속도가 느림
  • 설계하는 데 시간 소요

주요 키워드

  1. 객체
  2. 추상화
  3. 캡슐화
  4. 상속
  5. 다형성

JVM


자바 가상 머신의 준말

특징

  • 자바 프로그램이 OS에 종속되지 않고 실행할 수 있는 환경을 제공
  • 자바 프로그램의 메모리 관리 및 GC를 수행함
  • 결과적으로 OS와 자바 사이의 중개자 역할 수행
  • 쓰레드 동기화

자바 프로그램 실행 과정

  1. 자바 프로그램이 실행되면 JVM이 OS로 부터 필요한 메모리를 할당
  2. 그 후 자바컴파일러가 자바 소스파일을 바이트코드로 변환
  3. 클래스로더가 해당 바이트코드를 JVM에 적재
  4. excution engine이 해당 바이트코드를 해석
  5. 해석된 코드는 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

댓글