jvm
-
[JAVA/Garbage Collection] 가비지 컬렉션에 관하여Mhwan's Study/JAVA & Kotlin 2021. 1. 21. 00:38
자바는 다른 언어와 달리 개발자가 직접 객체를 메모리에서 해제하지 않아도 됩니다. 바로 Garbage Collector가 있기 때문인데, GC는 힙 메모리 영역에 존재하는 객체를 메모리에서 삭제하는 역할을 합니다. # GC의 대상 1. 객체가 Null인 경우 2. 블럭 실행 종료 후, 블럭 안에서 생성된 객체 3. Null인 부모객체를 포함하는 자식 객체 현재 사용하지 않는 객체를 힙에서 지우는 것으로 가비지 컬렉션의 과정을 Mark And Sweep이라고 합니다. - Mark : JVM의 가비지 컬렉터가 스택에서 참조하고 있는 힙에 있는 영역을 모두 마킹합니다. 이 마킹 작업을 위해 현재 작업중인 모든 스레드를 중단(stop the world)하며, 이 때문에 System.gc()를 함부로 호출하면 안..
-
[JAVA/JVM & Compile] JVM과 컴파일Mhwan's Study/JAVA & Kotlin 2021. 1. 19. 02:23
JAVA는 OS에 독립적으로 실행되는 특징을 갖고 있다. 이는 JVM이 있기 때문에 가능한데, JVM은 자바 프로그램이 기기나 운영체제 상관없이 실행 될 수 있게 하며, 프로그램 메모리(스택, 힙 영역의 관리)를 관리하고 최적화한다. # JVM의 구성요소 Class Loader, Execution Engine, Runtime Data Area, Garbage Collector 여기서 Runtime Data Area (JVM의 메모리 영역 (메소드, 스택, 힙, PC 레지스터, 네이티브 메소드 스택)), Garbage Collector는 이후 더 자세히 적어보려고 한다. # 컴파일 과정 Java compiler가 소스코드를 컴파일해 바이트 코드(.class)로 변환한다. 바이트 코드는 JVM은 읽을 수 있..