From 6a2afc2158c70ddc2751cbd1e15bac5437ee8c94 Mon Sep 17 00:00:00 2001 From: Diger Date: Wed, 3 Jan 2024 16:57:00 +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?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _posts/2022-10-10-JVM-Memory.md | 16 +++++++++++++++- _posts/2023-10-10-JVM-GC.md | 6 ++++++ _posts/2023-12-29-GoingToFlexibleArchitecture.md | 1 + 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/_posts/2022-10-10-JVM-Memory.md b/_posts/2022-10-10-JVM-Memory.md index 3acc85a..b0194f8 100644 --- a/_posts/2022-10-10-JVM-Memory.md +++ b/_posts/2022-10-10-JVM-Memory.md @@ -30,7 +30,6 @@ mermaid: true Heap 영역은 조금 더 깊게 들어가면 다음 도식화 같이 구성되어있다. - ### Heap - Young Generation (새로운 객체가 할당되는 공간) - Young Generation은 새로운 객체들이 할당되는 영역이다. @@ -78,15 +77,30 @@ Java 가 아닌 다른 언어(C, C++)로 작성된 Native Code 의 명령을 저 ## JVM Memory 요약 ### Method 영역 (공유 가능) + 1. static 키워드로 선언된 요소들 2. 클래스 이름, 부모클래스, 클래스 메서드, 클래스 변수 등 ### Heap (공유 가능) + 1. 인스턴스 2. 인스턴스 변수 GC가 참조 되지 않은 메모리를 확인하고 제거하는 영역 ### Thread (Stack) (공유 가능) + 1. 메서드 내에서 사용되는 값들을 저장(매개변수, 메서드에서 선언한 변수, 리턴값 등) 2. 지역변수(메서드에 의한 변수) + +--- + +## JVM 최소 힙 용량에서 최대 힙 용량까지 + +JVM은 최소 힙 용량과 최대 힙 용량을 가지고 있다. 그렇다면 최소 힙 용량으로 메모리 크기가 커버가 되지 않을 때 어떻게 용량을 늘리는걸까? + +한 번에 최대 용량까지 늘리는걸까? 아니면 점진적으로 늘려가는 걸까? 그리고 이 과정에서 생기는 성능 이슈는 없을까? + +힙 크기를 변경하는 작업은 JVM 내부에서 수행되며, 이 작업 도중에는 STW가 발생하게 된다. + +힙 크기를 늘리면 그만큼 더 넓어진 메모리를 탐색해야하기 때문에 GC의 실행 시간도 증가할 수도 있다. diff --git a/_posts/2023-10-10-JVM-GC.md b/_posts/2023-10-10-JVM-GC.md index 1567166..05d8baa 100644 --- a/_posts/2023-10-10-JVM-GC.md +++ b/_posts/2023-10-10-JVM-GC.md @@ -323,6 +323,12 @@ Parallel Collector에서 사용되는 병렬 압축은 Parallel Collector가 Maj 현재 LTS 17 버전의 기본 값으로 지정되어있다. +하드웨어가 발전되면서 Java 애플리케이션에 사용할 수 있는 메모리의 크기도 점차 켜저갔다. + +큰 힙 메모리에서 짧은 GC 시간을 보장하는데 그 목적을 둔다. + +JVM 힙은 2048개의 Region 으로 나뉠 수 있으며, 각 Region의 크기는 1MB ~ 32MB 사이로 지정될 수 있다. (-XX:G1HeapRegionSize 로 설정) + ![](https://github.com/K-Diger/K-Diger.github.io/assets/60564431/335ee6c2-68de-4ea7-a808-1647b973220e) G1은 동시 수집기이다. 동시 수집기는 애플리케이션에 대해 비용이 많이 드는 일부 작업을 동시에 수행한다. 이로 인해 높은 처리량을 달성할 수 있다. diff --git a/_posts/2023-12-29-GoingToFlexibleArchitecture.md b/_posts/2023-12-29-GoingToFlexibleArchitecture.md index dcd4cec..fe26c45 100644 --- a/_posts/2023-12-29-GoingToFlexibleArchitecture.md +++ b/_posts/2023-12-29-GoingToFlexibleArchitecture.md @@ -286,3 +286,4 @@ class UserOrderRetrieveModel( --- ## 2. 도메인 중심 설계 (DDD) +