본문 바로가기

JVM6

[JVM]가비지 컬렉션(Garbage Collection, GC)의 알고리즘 https://hyeri-dev.tistory.com/16 가비지 컬렉션(Garbage Collection, GC)의 작동 원리https://hyeri-dev.tistory.com/12 가비지 컬렉션(Garbage Collection, GC)의 개념 가비지 컬렉션(Garbage Collection, GC) 이란? 가비지 컬렉션(Garbage Collection, GC) Java의 메모리 관리 기법으로 애플리케이션이 동적으로hyeri-dev.tistory.com이전 포스팅에서 GC를 실행하기 위해서는 JVM GC 관련이 아닌 스레드는 실행을 멈추게 하여 Stop The World(이하 STW)가 발생한다고 하였다. 이 STW 때문에 어플리케이션이 중지되는 문제가 발생할 수 있었고 자바의 발전됨에 따라 He.. 2023. 9. 12.
[JVM]가비지 컬렉션(Garbage Collection, GC)의 작동 원리 https://hyeri-dev.tistory.com/12 가비지 컬렉션(Garbage Collection, GC)의 개념가비지 컬렉션(Garbage Collection, GC) 이란? 가비지 컬렉션(Garbage Collection, GC) Java의 메모리 관리 기법으로 애플리케이션이 동적으로 할당했던 메모리 영역 중 더이상 사용하지 않는 영역을 정리하는hyeri-dev.tistory.com가비지 컬렉션(GC)의 수거 대상을 참조 되고 있거나, 그렇지 않은 상태를 구분하여 주기적으로 제거한다고 했다. 그럼 어떠한 방식으로 가비지 컬렉션이 작동되고 있는걸까?GC 동작 방식 Mark And Sweep Mark-Sweep이란 자바, 자바 스크립트에서 사용되는 GC 알고리즘으로 루트에서부터 해당 객체에 접근.. 2023. 9. 11.
[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.
[JVM]가비지 컬렉션(Garbage Collection, GC)의 개념 가비지 컬렉션(Garbage Collection, GC) 이란?가비지 컬렉션(Garbage Collection, GC) Java의 메모리 관리 기법으로 애플리케이션이 동적으로 할당했던 메모리 영역 중 더이상 사용하지 않는 영역을 정리하는 기능을 한다. Heap 메모리에서 활동하며 JVM에서 가비지 컬렉터(Garbage Collector)의 스케줄링을 담당한다.개발자가 따로 메모리를 관리하지 않아도 되므로, 메모리 누수와 같은 문제를 방지하고 개발에만 집중할 수 있도록 한다.가비지 컬렉터(Garbage Collector)가비지(Garbage) : 앞으로 사용되지 않는 객체의 메모리더이상 참조되지 않는 메모리 객체(가비지)를 모아 정해진 스케줄에 의해 관리(제거)하는 역할을 수행한다.일반적으로 자동으로 실행.. 2023. 9. 1.
[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.
JVM이란? JVM 자바 가상 머신(Java Virtual Machine)의 약자. 자바를 실행하기 위해 가상화된 환경을 제공하는 소프트웨어. 컴파일러에 의해 변환된 바이트 코드를 기계어로 변환 시키는 가상 CPU 자바로 작성된 모든 프로그램은 JVM에서만 실행될 수 있으므로, 자바 프로그램을 실행하기 위해서 반드시 JVM이 설치되어 있어야 한다. JVM를 사용하는 이유 플랫폼 독립성 Java는 JVM을 통해 모든 플랫폼에서 제약없이 동작 가능하다. JVM은 OS에 종속받지 않고 실행되기 위해 OS에 위해서 Java를 실행할 수 있도록 한다. C언어의 경우 개발자가 소스 코드를 작성하면, 컴파일러에 의해 소스 코드는 바이트 코드로 변환된다. 이때 컴파일러는 같은 형식의 바이트 코드를 만들어 내지만, 각 OS 환경에 .. 2023. 8. 29.