From 3903b59758f78ee4d99e9665d56083db2e29b44b Mon Sep 17 00:00:00 2001 From: Diger Date: Fri, 22 Mar 2024 15:47:38 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B8=B0=EB=B3=B8=EC=9D=B4=20=EC=A4=91?= =?UTF-8?q?=EC=9A=94=ED=95=98=EB=8B=A4=20[JVM]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _posts/2022-10-10-Execution-Engine.md | 39 --------------------------- _posts/2023-10-10-JVM-GC.md | 4 +++ _posts/2024-03-16-JavaVersioning.md | 6 +++-- _posts/2024-03-22-JVMAll.md | 20 ++++++++++++++ 4 files changed, 28 insertions(+), 41 deletions(-) delete mode 100644 _posts/2022-10-10-Execution-Engine.md create mode 100644 _posts/2024-03-22-JVMAll.md diff --git a/_posts/2022-10-10-Execution-Engine.md b/_posts/2022-10-10-Execution-Engine.md deleted file mode 100644 index 96a073d..0000000 --- a/_posts/2022-10-10-Execution-Engine.md +++ /dev/null @@ -1,39 +0,0 @@ ---- - -title: JVM - Execution Engine -date: 2022-10-10 -categories: [JVM-Execution-Engine] -tags: [JVM-Execution-Engine] -layout: post -toc: true -math: true -mermaid: true - ---- - -# JVM Execution Engine - -`JIT Compiler` 와 `GC`가 존재하는 영역으로 Native Code (타 언어로 만들어진 메서드 등)을 다루는 영역이다. - -실행 엔진은 .class 파일을 실행시키고 ByteCode를 각 행마다 읽어들이며 메모리 공간에 존재하는 데이터와 정보들을 이용하며 명령어를 실행시켜준다. - -실행 엔진은 `세 부분으로 분류` 할 수 있다. - -## Execution Engine - Interpreter - -바이트 코드를 한줄 씩 해석한 다음 실행한다. 인터프리터의 단점으로는, `하나의 메서드를 여러 번` 호출 할 경우, `매 번 해석`을 해줘야 하는 것으로 CPU, Memory를 더 잡아먹게 된다. - -## Execution Engine - Just-In-Time Compiler(JIT) - -인터프리터의 효율을 증가시키기 위해 사용된다. `전체 바이트 코드를 컴파일`하여 `네이티브 코드(기계어)`로 변경하므로 인터프리터가 반복되는 메서드 호출을 하지 않아도 JIT 에서 해당 부분에 관한 네이티브 코드를 제공하므로 재 해석이 필요하지 않아 효율을 증가 시켜주는 방법이다. - ---- - -## Execution Engine - Garbage Collector - -Java 프로그램에서, 자동으로 메모리를 관리해주는 과정이다. C/C++ 와 달리, 프로그래머는 객체의 메모리 할당과 해제를 신경 쓸 필요가 없다. Garbage Collector 이 데몬 쓰레드의 형태로 수행해주기 때문이다. - -[Oracle UnderStanding GC](https://blogs.oracle.com/javamagazine/post/understanding-garbage-collectors) - -[Oracle GC Tuning Document](https://docs.oracle.com/en/java/javase/17/gctuning/garbage-first-garbage-collector-tuning.html) - diff --git a/_posts/2023-10-10-JVM-GC.md b/_posts/2023-10-10-JVM-GC.md index 362c969..6fb52e0 100644 --- a/_posts/2023-10-10-JVM-GC.md +++ b/_posts/2023-10-10-JVM-GC.md @@ -21,6 +21,10 @@ mermaid: true [DZone](https://dzone.com/articles/jvm-architecture-explained) +[Oracle UnderStanding GC](https://blogs.oracle.com/javamagazine/post/understanding-garbage-collectors) + +[Oracle GC Tuning Document](https://docs.oracle.com/en/java/javase/17/gctuning/garbage-first-garbage-collector-tuning.html) + # JVM Garbage Collector Java 코드는 JVM 에 의해 ByteCode로 컴파일된다. Java 프로그램이 JVM 에서 실행될 때 객체는 Heap에 저장되고 diff --git a/_posts/2024-03-16-JavaVersioning.md b/_posts/2024-03-16-JavaVersioning.md index 5073391..0f93a7a 100644 --- a/_posts/2024-03-16-JavaVersioning.md +++ b/_posts/2024-03-16-JavaVersioning.md @@ -335,7 +335,7 @@ public class OuterClass { public class InnerClass { public void show() { - secretMethod(); // 컴파일 에러 + privateMethod(); // Java 11이전 버전에서는 컴파일 에러가 발생한다. } } } @@ -343,7 +343,9 @@ public class OuterClass { JDK 11 부터는 별다른 코드의 변경 없이 위와 같은 코드가 컴파일 에러가 발생하지 않도록 조치되었다. -여기서 알고가면 좋을 점은 `Inner Class` vs `Nested Class`인데, `Inner Class`는 위와 같은 형태이고, `Nested Class`는 `Outer Class 내에 Static으로 Class`가 선언된 경우를 말한다. +여기서 알고가면 좋을 점은 `Inner Class` vs `Nested Class`인데, `Inner Class`는 위와 같은 형태이고, + +`Nested Class`는 `Outer Class 내에 Static으로 Class`가 선언된 경우를 말한다. --- diff --git a/_posts/2024-03-22-JVMAll.md b/_posts/2024-03-22-JVMAll.md new file mode 100644 index 0000000..d186819 --- /dev/null +++ b/_posts/2024-03-22-JVMAll.md @@ -0,0 +1,20 @@ +--- + +title: JVM 시리즈 모아보기 +date: 2024-03-22 +categories: [JVM, ClassLoader, Memory, JIT, GC] +tags: [JVM, ClassLoader, Memory, JIT, GC] +layout: post +toc: true +math: true +mermaid: true + +--- + +- [JVM - 클래스 로더](https://k-diger.github.io/posts/ClassLoader) + +- [JVM - 메모리 구조](https://k-diger.github.io/posts/JVM-Memory) + +- [JVM - 실행 엔진 (JIT 컴파일러)](https://k-diger.github.io/posts/JITCompiler) + +- [JVM - 실행 엔진 (GC)](https://k-diger.github.io/posts/JVM-GC)