GC(3)
-
[JAVA] GC에 대하여
Garbage Collection 자바에서 할당된 메모리들에 대해 Garbage Collector(GC)가 자동으로 불필요한 메모리를 수집해 해제해주는 역할을 담당 동적으로 할당된 메모리 영역 가운데 더이상 사용하지 않거나 불필요하게 할당된 영역을 탐지하여 자동으로 해제하는 기법 장점 유효하지 않은 포인터 접근 : 이미 해제된 메모리에 접근하는 버그를 방지한다. 이중 해제 : 이미 해제된 메모리를 또 다시 해제하는 버그를 방지 Memory leak 방지 : 더 이상 필요하지 않은 메모리가 해제되지 않고 남아있어 메모리가 부족해 프로그램 중단되는 버그 방지 단점 Garbage Collection 이 발생하는 시점을 예측하기 어려움 할당된 메모리가 해제된 시점을 알수없다. GC가 동작하는 동안에는 다른 동작..
2024.03.15 -
[JAVA] 컴파일 과정
1. 전체 실행 과정 2. JVM 타겟 플랫폼에 맞춰서 컴파일 해야한다는 단점을 보완하기 위해 나온 플랫폼 Java의 바이트 코드는 JVM이라는 가상머신 위에서 돌아감으로써 문제를 해결 JVM이 설치된 플랫폼이면 어디든 똑같이 바이트코드가 동작 3. 바이트코드 변환 개발자가 .java 파일을 생성하고 Build를 하게되면 자바 컴파일러의 javac라는 명령어를 사용하여 자바 바이트코드로 구성된 .class파일을 생성하게 됩니다. 바이트코드는 JVM과 같은 가상머신이 이해할수있는 언어이고, 바이너리 코드는 CPU가 이해할 수 있는 언어이다. 4. 클래스 로더와 실행 엔진 Bootstrap Class Loader : 가장 기본적인 자바 API를 로드하는 클래스로더 Extension Class Loader :..
2024.02.26 -
[Java] 메모리 관리
Java는 JVM이라는 가상머신에서 컴파일/실행 시키는것, JVM을 이해하여 자바의 메모리 할당부분 이해를 도운다. JVM의 메모리 할당은 결국, Java Garbage Collection을 통해 메모리를 관리한다. Java의 GC에 대한 이해를 통해 메모리 관리에 대한 부분을 이해하자. 1. 일반적인 메모리의 구조 코드(code) 영역 메모리의 코드(code) 영역은 실행할 프로그램의 코드가 저장되는 영역으로 텍스트(code) 영역이라고도 부릅니다. CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리하게 됩니다. 데이터(data) 영역 메모리의 데이터(data) 영역은 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역입니다. 데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램..
2024.02.23