본문 바로가기

프로그래밍 언어/Java3

GC (Garbage Collection) 메모리 관리 방법 중 하나. JVM의 Heap 영역에서 동적으로 할당했던 메모리 중 필요 없게 된 메모리 객체를 모아 주기적으로 제거하는 프로세스. 장점 생산성 증가 단점 GC동작 시점 조절 불가. (메모리가 언제 해제되는지 모름) GC 작동 중 GC관련 스레드를 제외한 모든 스레드 멈춤. 이를 STW(Stop-The-World) 라고 함. GC 대상 가비지 컬렉션은 특정 객체의 도달성, 도달능력(Reachability) 라는 개념을 적용함. Reachable : 객체에 유효한 레퍼런스 존재(참조되고 있는 상태) Unreachable : 객체가 참조되고 있지 않은 상태(GC 대상) JVM 메모리에선 객체들은 실질적으로 Heap 영역에서 생성. Method Area나 Stack Area에서는 Heap Ar.. 2024. 2. 25.
JVM 메모리 구조 앱이 실행되면 JVM은 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 할당받고 JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리한다. 메소드 영역 (Method Area) : 클래스 + 클래스 변수 프로그램 실행 중 어떤 클래스가 사용되면 JVM은 해당 클래스의 클래스파일(*.class)을 읽어서 분석하여 클래스에 대한 정보(클래스 데이터)를 이곳에 저장한다. 이 때, 그 클래스의 클래스 변수(class variable :: static이나 공유 변수)도 이 영역에 함께 생성된다. 힙 영역(Heap) : 인스턴스 + 인스턴스 변수 인스턴스가 생성되는 공간. 프로그램 실행 중 생성되는 인스턴스는 모두 이곳에 생성된다. 즉, 인스턴스 변수(instance variable)들이 생성되는 공간 .. 2024. 2. 25.
JVM(Java Virtual Machine)이란? JVM은 Java가 가상 메모리를 사용하기 위한 VM이다. JVM 기반의 다른 프로그래밍 언어들도 존재한다 (Java를 대체하기 위해 나온 Kotlin이나 스칼라 등) program.java를 컴파일 하여 *.class 파일을 JVM에서 기계어로 바꾸어 실행시켜준다. Virtual Memory와 Multiply mapped memory space JVM의 메모리 주소는 가상 메모리 주소를 사용한다. (물리적 메모리 주소가 아니다) 가상 메모리는 몇 가지 장점이 있다. 하나 이상의 가상 주소가 동일한 하나의 물리 주소를 가리킬 수 있다. 물리 메모리 공간보다 큰 가상 메모리 공간을 사용할 수 있다. 동작 방식 JVM의 역할은 자바 앱을 클래스 로더를 통해 읽어 자바 API와 함께 실행하는 것이다. 자바 프.. 2024. 2. 25.