본문 바로가기

Backend21

[JVM] 힙(Heap) 영역 Heap 영역의 변화Java 7 JVM의 Heap 영역과 Java 8 JVM의 Heap 영역의 가장 큰 차이 점은 Permanent Generation이 사라지고 Metaspace 영역이 생겨난 것이다. 공통점로드되는 클래스, 메서드 등에 관한 메타 정보를 저장한다.리플렉션 클래스 로드 시 사용된다.차이점 Permanent GenerationMetaspaceDefault 크기제한된 고정 크기자동 확장 가능(고정 X)속하는 영역Heap 영역Native Memory 영역이처럼 Metaspace 영역은 JVM에 의해 관리되는 Heap영역이 아닌 OS 레벨에서 관리되는 Native Memory 영역을 이용함으로서 개발자는 영역 확보의 상한을 크게 의식하며 개발하지 않아도 된다는 장점을 가진다. 다만 주의할 점은.. 2023. 9. 8.
리플렉션(Reflection)과 Spring JVM을 공부하다 보니 리플렉션이라는 개념이 등장했다. 리플렉션은 곧 Spring에 대한 이야기라고 하셨다. Java의 겉핧기 식 공부만 한 비전공자인 나에겐 생소한 개념이었기 때문에 리플렉션의 개념부터 공부하기 시작했다. 그렇다면 Spring과의 연관성은 어떻게 이루어지는 것일까? 리플렉션(Reflection)이란? https://hyeri-dev.tistory.com/13 자바 리플렉션(Reflection) 리플렉션(Reflection)이란? 리플렉션의 어원 리플렉션의 어원은 반사, 비치다라는 뜻을 가진다. 즉, 리플랙션은 실질적인 주체(클래스)를 투영한 혹은 반사된 이미지, 클래스 로더에 의해 JVM 메모리 hyeri-dev.tistory.com 리플렉션은 클래스로더에 의해 JVM 메모리 영역에 저.. 2023. 9. 6.
[Java] 리플렉션(Reflection) 리플렉션(Reflection)이란?리플렉션의 어원리플렉션의 어원은 반사, 비치다라는 뜻을 가진다. 즉, 리플랙션은 실질적인 주체(클래스)를 투영한 혹은 반사된 이미지, 클래스 로더에 의해 JVM 메모리 영역에 로드된 클래스 정보를 활용하는 기능이라고 생각해볼 수 있다.리플렉션이란?리플렉션은 런타임에 사용되는 기능으로 프로그램 실행 중에 사용자, 운영체제 및 기타 프로그램과 상호작용하면서 클래스, 인터페이스 등을 검사하고 조작할 수 있는 기능을 말한다.💡컴파일타임 : 소스코드를 컴파일러에 의해 컴파일 하는 단계 => 스냅샷런타임 : 컴파일된 코드를 운영체제, 사용자 등과의 상호작용하는 단계 => 상호작용리플렉션 동작 원리컴파일된 코드는 Class Loader에 의해 클래스의 메타정보들을 메서드 영역에 저.. 2023. 9. 5.
[JVM]가비지 컬렉션(Garbage Collection, GC)의 개념 가비지 컬렉션(Garbage Collection, GC) 이란?가비지 컬렉션(Garbage Collection, GC) Java의 메모리 관리 기법으로 애플리케이션이 동적으로 할당했던 메모리 영역 중 더이상 사용하지 않는 영역을 정리하는 기능을 한다. Heap 메모리에서 활동하며 JVM에서 가비지 컬렉터(Garbage Collector)의 스케줄링을 담당한다.개발자가 따로 메모리를 관리하지 않아도 되므로, 메모리 누수와 같은 문제를 방지하고 개발에만 집중할 수 있도록 한다.가비지 컬렉터(Garbage Collector)가비지(Garbage) : 앞으로 사용되지 않는 객체의 메모리더이상 참조되지 않는 메모리 객체(가비지)를 모아 정해진 스케줄에 의해 관리(제거)하는 역할을 수행한다.일반적으로 자동으로 실행.. 2023. 9. 1.
[JVM] 동작 방식 및 메모리 구조(2) JVM의 동작 방식 및 구조자바 프로그램을 실행하면 JVM은 OS로부터 메모리를 할당받는다.자바 컴파일러(Javac)가 자바 소스코드(. java)를 자바 바이트 코드(. class)로 컴파일한다.Class Loader는 동적 로딩을 통해 필요한 클래스들을 로딩 및 링크하여 Runtime Data Area에 올린다.Runtime Data Area에 로딩된 바이트 코드는 Execution Engine을 통해 해석된다.이 과정에서 Execution Engine에 의해 Garbage Collector의 작동과 Thread 동기화가 이루어진다.💡Runtime Data Area는 실직적인 메모리를 할당받아 관리하는 영역.JVM의 역할은 Java 애플리케이션을 클래스 로더를 통해 읽어 Java API와 함께 실행.. 2023. 8. 31.
[JVM] 동작 방식 및 메모리 구조(1) JVM 동작 방식개발자가 소스 코드(.java) 파일을 작성하여 실행하면 Javac(Java Complier)에 의해 바이트 코드(.class)로 변환된다. 💡 소스 코드를 바이트 코드로 변경하는 이유1. 작성한 코드를 1차적으로 숨기기 위해2. 컴파일 이후에는 문법 검사를 하지 않도록하여 시간을 단축하기 위해위 방식은 소스 코드를 변경할 때마다 컴파일하고 실행 시켜야 하기 때문에 시간이 많이 걸린다는 단점을 가진다. Javac에 의해 변환된 Class 파일은 lass Loader가 JVM의 메모리 영역(Runtime Data Area)으로 로딩시킨다. JVM의 메모리 영역(Runtime Data Area) JVM의 메모리 영역는 자바 애플리케이션을 실행할 때 사용되는 데이터를 적재하는 영역으로 Ru.. 2023. 8. 30.