JAVA
[JAVA] 가비지 컬렉션(Garbage Collection) 동작 원리 & GC 종류
가비지 컬렉션(Garbage Collection)이란? 가비지 컬렉션(Garbage Collection, 이하 GC)은 자바의 메모리 관리 방법 중의 하나로 JVM(자바 가상 머신)의 Heap 영역에서 동적으로 할당했던 메모리 영역 중 필요 없게 된 메모리 객체(garbage)를 주기적으로 제거하는 프로세스를 말한다. C나 C++에서는 free()라는 함수를 통해 프로그래머가 수동으로 메모리 할당과 해제를 일일이 해줘야 한다. 반면 Java는 JVM에 탑재되어 있는 가비지 컬렉터가 메모리 관리를 대행해주기 때문에 Java 프로세스가 한정된 메모리를 효율적으로 사용할수 있게 하고, 개발자 입장에서 메모리 관리, 메모리 누수(Memory Leak) 문제에서 대해 완벽하게 관리하지 않아도 되어 오롯이 개발에만..
[JAVA] JVM 내부 구조와 메모리 구조
자바 가상 머신(JVM)의 동작 방식) 1. 자바로 개발된 프로그램을 실행하면 JVM은 OS로부터 메모리를 할당받는다. (JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리한다.) 2. 컴파일(Compile): 작성한 자바 소스코드(.java)를 자바 컴파일러를 사용하여 컴파일한다. 컴파일은 소스 코드를 기계어가 아닌 중간 단계의 바이트 코드(Bytecode)로 변환하는 과정이다. 컴파일된 바이트 코드는 .class 확장자를 가진 파일에 저장된다. 3. 클래스 로딩: 자바 가상 머신(Java Virtual Machine, JVM)은 프로그램을 실행하기 전에 컴파일된 바이트 코드를 클래스로 로딩한다. 클래스 로더(Class Loader)는 필요한 클래스들을 찾아서 메모리(JVM Runtime Da..
[JAVA] JVM (Java Virtual Machine) 이란?
JVM의 동작 방식 (자바 코드 실행 과정) 1. 자바로 개발된 프로그램을 실행하면 JVM은 OS로부터 메모리를 할당받는다. (JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리한다.) 2. 컴파일(Compile): 작성한 자바 소스코드(.java)를 자바 컴파일러를 사용하여 컴파일한다. 컴파일은 소스 코드를 기계어가 아닌 중간 단계의 바이트 코드(Bytecode)로 변환하는 과정이다. 컴파일된 바이트 코드는 .class 확장자를 가진 파일에 저장된다. 3. 클래스 로딩: 자바 가상 머신(Java Virtual Machine, JVM)은 프로그램을 실행하기 전에 컴파일된 바이트 코드를 클래스로 로딩한다. 클래스 로더(Class Loader)는 필요한 클래스들을 찾아서 메모리(JVM Runtime..
[JAVA] JDK, JRE, JVM
JDK, JRE, JVM JDK (Java Development Kit) 자바 개발 환경으로 자바 어플리케이션을 개발하기 위해 필요한 도구를 제공한다 JDK는 JRE + 개발을 위해 필요한 도구 즉, 자바 언어를 바이트 코드로 컴파일 해주는 자바 컴파일러(javac), 자바 클래스 파일을 해석해주는 역 어셈블리어(javap) 등을 포함한다. JRE (Java Runtime Environment) JRE는 자바 실행 환경으로 JVM, JAVA 클래스 라이브러리, 기타 JAVA 어플리케이션 실행에 필요한 파일들을 포함한다. JRE는 JVM의 실행환경을 구현했다고 할 수 있다. JVM (Java Virtual Machine) JVM은 자바 가상 머신으로 자바 어플리케이션을 실행하는 가상 머신이다. 실제 컴퓨터..