[Java] JVM & GC

­Valentine·2021년 12월 29일
0

CS

목록 보기
4/23

CS 공부 2일차.. 이지만 몰아서 올리는 중입니다ㅋㅋㅋㅋ

JVM

  • JVM은 Java Virtual Machine의 약자로 다른 플랫폼에서 자바 프로그램이 실행되도록 하는 런타임 환경(JRE)을 제공해줍니다.

  • Runtime Data Area

    • PC Register, JVM stack, Native Method stack, Heap, Method Area의 5가지로 Heap과 Method Area는 모든 스레드가 공유하고 나머지는 스레드별로 생성된다.
    • JVM이 프로그램을 수행하기 위해 OS로부터 할당받은 메모리 영역입니다.
    • PC Register : 스레드에서 지금 실행중인 메서드의 bytecode(instruction)의 주소 저장
    • JVM stack : 메서드 실행시마다 생성되면 stack의 제일 위에 있는 메서드가 현재 실행중이라는 뜻
    • Native Method stack : Java 이외의(C와 같은) 언어로 작성된 method를 수행할 때 필요한 stack
    • Heap : 클래스의 인스턴스와 배열을 위한 메모리가 할당되는 영역
    • Method Area: 각 클래스별 metadata가 저장되는 곳.
  • java compile 과정

    • 자바는 .java로 작성된 소스코드를 자바 컴파일러(JAVAC)를 통해 .class의 바이트 코드로 변형시켜 자바 API와 함께 클래스 로딩하여 읽어들이고 JVM 위에서 실행시킵니다.
    • 실행은 인터프리터와 JIT Compiler로 이루어지는데 인터프리터는 바이트 코드를 하나씩 읽어서 실행시키고 JIT Compiler는 바이트 코드 전체를 바이너리 코드로 컴파일하고 직접 실행합니다.

Garbage Collection

  • Garbage Collection은 Java에서 데이터를 할당할때 C와는 다르게 명시적으로 해제해주지 않는데 이를 처리해주는 JRE의 구성 요소중 일부입니다. 더이상 참조되지 않는 객체들을 stop-the-world를 하고 GC를 실행하여 삭제합니다.

  • 명시적으로 해제해주려면 해당 객체를 null로 선언합니다.

  • GC는 Young 영역과 Old 영역, Permanent영역으로 나누어지는데 Young 영역에서 Minor GC가 이루어지고 시간이 지나면 Old 영역으로 이동하여 Major GC가 이루어지고 그래도 살아남은 객체들은 Permanent 영역으로 이동합니다.

profile
천체관측이 취미

0개의 댓글